none
Ayuda. Error al retornar listas de Objetos con Entity Framework RRS feed

  • Pregunta

  • Necesito de su ayuda, tengo problemas con retornar una lista de objetos cuando especifico que campos son los que quieor devolver, me explicare mejor en la siguiente imagen. ojo si hago un select d ("completo a la tabla") todo me va bien, solo es cuando quiero personalizar que campos son los unicos que quieor devolverError Entity
    viernes, 12 de abril de 2013 7:16

Todas las respuestas

  • prueba con esto...

    ObjectQuery<departamento> departamentos= DB.departamento; IQueryable<departamento> q = from d in DB.deparamento join p in DB.pais on d.idpais equals p.idpais where d.estado == 1 && p.idpais == idpais orderby d.nombre ascending select new departamento { iddepartamento = d.iddepartamento, nombre = d.nombre campoX = d.campo.x, .....

    }



    Si se solucionó tu consulta no olvides marcar la respuesta. Saludos


    viernes, 12 de abril de 2013 7:33
  • No puedes hacer eso. Cuando haces un select new {...} estás creando un tipo anónimo (una clase definida internamente por el compilador y que no tiene nombre). Ese tipo anónimo se puede manejar localmente usando "var", pero no se puede devolver fuera de la rutina que lo declaró, porque en otros sitios del programa esa clase no es conocida.

    Tu rutina intenta devolver una lista de objetos de la clase "departamento". Pero no existe una conversión implícita del tipo anónimo al tipo departamento. Tendrás que hacer la conversión a mano; una forma consiste en cambiar el select de linq por "select new departamento { ...campos de la clase departamento... }" y otra sería meter un bucle que recorra q usando una variable de tipo var, y a cada iteracíon declarar un new departamento, rellenarlo, añadirlo a "lista" y luego devolver lista.

    viernes, 12 de abril de 2013 7:38
  • Prueba esto:

    if (q!=null)
    {
    lista = q.Select(x=> new departamento{
     iddepartamento = q.iddepartamento,
     nombre = q.nombre}).ToList();
    }

    viernes, 12 de abril de 2013 8:52