2011-08-01 122 views
6

我有一个名为navigationList的集合。该列表包含customer对象。 客户有一个名为Town的房产。LINQ groupby question

该名单包含5位顾客:2个城镇为“纽约”,5个城镇为“马德里”。

我想列表只能容纳2个客户。 1与镇“纽约”和一个与“马德里”。如果2个来自“纽约”,我想要最后一个。 “马德里”也一样。

LINQ语句是什么样的?

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

回答

18

你会想是

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

然而,你可能会想OrderBy第一,使Last是有意义的:

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

在这种情况下,排序完成由客户ID。