2011-08-01 34 views
6

Mam kolekcję o nazwie navigationList. Ta lista zawiera obiekty customer. Klient ma właściwość o nazwie Town.Grupa LINQ wg pytania

Lista zawiera 5 klientów: 2 z miastem "Nowy Jork" i 5 z miastem "Madryt".

Chcę, aby lista zawierała tylko 2 klientów. 1 z miastem "Nowy Jork" i jednym z "Madrytem". Jeśli 2 są z "Nowego Jorku", chcę ten ostatni. To samo dotyczy "Madrytu".

Jak wyglądałoby oświadczenie LINQ?

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

Odpowiedz

18

co chcesz coś

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

jednak byłoby prawdopodobnie chcesz OrderBy pierwszy, tak że Last ma sens:

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

W tym przypadku zamawiania odbywa według identyfikatora klienta.