LINQ groupby问题

时间:2011-08-01 10:29:55

标签: c# linq group-by

我有一个名为navigationList的集合。此列表包含customer个对象。 客户有一个名为Town的属性。

该名单拥有5个客户:2个城镇“纽约”,5个城镇“马德里”。

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

LINQ语句是什么样的?

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

1 个答案:

答案 0 :(得分: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完成。