2011-08-01 11 views
6

Tengo una colección llamada navigationList. Esta lista contiene customer objetos. Un cliente tiene una propiedad llamada Town.LINQ groupby pregunta

La lista tiene 5 clientes: 2 con la ciudad "Nueva York" y 5 con la ciudad "Madrid".

Quiero que la lista solo tenga solo 2 clientes. 1 con el pueblo "Nueva York" y uno con "Madrid". Si 2 son de "Nueva York", quiero el último. Lo mismo para "Madrid".

¿Cómo sería la declaración LINQ?

var newList = navigationList.GroupBy(c => c.Town) // ? 

Respuesta

18

Usted quiere algo así como

var newList = navigationList.GroupBy(c => c.Town).Select(g => g.Last()).ToList(); 

Sin embargo, es probable que quieren OrderBy primera, por lo que el Last es significativa:

var newList = navigationList. 
       GroupBy(c => c.Town). 
       Select(g => g.OrderBy(c => c.Id).Last()). 
       ToList(); 

En este caso el pedido se realiza por cliente Id.