LINQ groupby问题

6
我有一个叫做 navigationList 的集合。这个集合包含了 customer 对象。每个客户对象中都有一个叫做 Town 的属性。
这个列表中有5个客户,其中2个来自 "New York",5个来自 "Madrid"。
我想让这个列表只留下两个客户:一个来自 "New York",另一个来自 "Madrid"。如果有两个客户来自 "New York",那么我只需要最后一个。对于 "Madrid" 也是同样的。
LINQ 语句应该是什么样子的?
var newList = navigationList.GroupBy(c => c.Town) // ? 
1个回答

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排序。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接