none
Consulta que retorna un conjunto de registros en LINQ. RRS feed

  • Pregunta

  • Por favor una ayuda: estoy realizando una consulta desde un metodo de una clase, como puedo retornar el conjunto de registros producto de la consulta.

     public Estudiante ConsultarEstudiantes()
     {
                var consulta = from e in dc.Estudiante
                            select e;
                return consulta;
     }

    me presenta un error, de lo poco que conozco, el instanciamiento de la Clase estudiantes representa una fila de la tabla, pero el resultado de la consulta LINQ me esta retornando mas de una fila.
    ?Como puedo realizar esto?
    Gracias..

    jueves, 20 de enero de 2011 15:33

Todas las respuestas

  • hola

    podrias usar algo como esto

    public Estudiante ConsultarEstudiantes()
     {
                var consulta = from e in dc.Estudiante
                            select e;
                           
                return consulta.FirstOrDefault();
     }

     

    ya que una query linq devuelve un IEnumerble o sea una lista, y en tu caso solo una instancia

     

    sino usa

    public List<Estudiante> ConsultarEstudiantes()
     {
                return (from e in dc.Estudiante
                            select e).ToList();
                          
     }

    pero aqui devuelves una lista, no un solo item

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    jueves, 20 de enero de 2011 17:07
  • Hola Fredy,

    para retornar el conjunto debes de devoler o un IEnumerable<Estudiante> o convertir tu consulta a un List<Estudiante> de la siguiente manera:

    var consulta = (from e in dc.Estudiante select e).ToList();

    Piensa que por defecto, una consulta de LINQ devuelve un IEnumerable, la función de este IEnumerable es mantener un cursor que no ejecuta la consulta hasta que no se recorra la misma, con lo que si estás trabajando con un sistema en capas y desconectado del contexto (dc) lo mejor es convertirla los datos a ToList y forzar a ejecutar la consulta antes de perder el ámbito del contexto.

     


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    • Propuesto como respuesta jtorrecilla viernes, 21 de enero de 2011 7:26
    jueves, 20 de enero de 2011 18:35
  • Gracias Leandro me sirvio tu codigo, resolvi mi problema.

     


    FJ
    viernes, 21 de enero de 2011 16:13
  • Alberto cual es lo positivo de utilizar LINQ en vez de los objetos de ADO.Net para manipular la data de la bd?

    Gracias por Tu ayuda....


    FJ
    viernes, 21 de enero de 2011 16:14
  • Hola Fedy,

    LINQ to SQL te acerca al concepto de ORM y te permite trabajar con él. Es una gran ayuda para trabajar con orientación a objetos en nuestras aplicaciones, aunque no cumple con todo lo que un ORM debe de tener. Para ORM es mejor usar Entity Framework.

    Otra de la ventajas de LINQ to SQL es que las consultas son compiladas en tiempo de desarrollo y no tienes que esperar a que se lancen al SQL Server para saber si son correctas.


    Alberto Diaz Martin twitter://@adiazcan | http://geeks.ms/blogs/adiazmartin | MVP SharePoint Server
    sábado, 22 de enero de 2011 10:37