none
COnsulta agrupada devolviendo el maximo de cada grupo RRS feed

  • Pregunta

  • Buenas días a todos, espero que me puedan echar una mano como otras tantas veces.

    tengo una entidad de entityframework "contexto.Eventos" con objetos de tipo Evento que tienen un campo Codigo por el que quiero agrupar, otros campos como latitud y longitud que quiero mostrar simplemente, y otro campo id por medio del cual quiero traerme los datos del maximo id para cada uno de los grupos que crea el campo codigo. lo ideal sería traerme el registro completo tipado (tipo Evento). por muchas pruebas que realizo no consigo componer la consulta.... estoy empezando con linq. a ver si alguien me puede ayudar.

    en sql, lo que quiero hacer seria algo tan simple como:

    SELECT max(id), codigo FROM eventos

    group by codigo.

    a esta consulta solo habría que añadirle los campos como longitud y latitud haciendo join con la misma tabla por ejemplo...

    SAludos y muchas gracias.

    lunes, 14 de julio de 2014 9:10

Respuestas

  • Hola, en linq tu consulta sería algo asi:

    var query = eventos.GroupBy(g => g.codigo).Select(s => new{MaxID = s.Max(r => r.id), s.First().codigo});

    Los campos se añaden en el select new y los join con el metodo .Join<>

    Aquí te dejo una ruta donde puedes consultar ejemplo de construcción de queries en linq.

    Queries in LINQ to Entities

    Saludos!!!


    Víctor del Valle - http://www.vrdelvalle.net

    • Marcado como respuesta Matos83 lunes, 14 de julio de 2014 10:55
    lunes, 14 de julio de 2014 10:01

Todas las respuestas

  • Hola, en linq tu consulta sería algo asi:

    var query = eventos.GroupBy(g => g.codigo).Select(s => new{MaxID = s.Max(r => r.id), s.First().codigo});

    Los campos se añaden en el select new y los join con el metodo .Join<>

    Aquí te dejo una ruta donde puedes consultar ejemplo de construcción de queries en linq.

    Queries in LINQ to Entities

    Saludos!!!


    Víctor del Valle - http://www.vrdelvalle.net

    • Marcado como respuesta Matos83 lunes, 14 de julio de 2014 10:55
    lunes, 14 de julio de 2014 10:01
  • Muchas gracias, al final me ha quedado así:

                List<Evento> result = (from a in (Logica.contexto.Eventos
                                            .Where(w => w.VendedorSuscriptorId == vSuscriptor)
                                                .GroupBy(g => g.VendedorCodigoAlba)
                                                    .Select(s => new { MaxID = s.Max(r => r.Id), s.FirstOrDefault().VendedorCodigoAlba})
                                       ) 
                             join b in Logica.contexto.Eventos
                             on a.MaxID equals b.Id
                             select b).ToList();

    lunes, 14 de julio de 2014 10:55