1

我有一个对象列表,其中有一些属性重复。我想根据条件获取所有非重复项以及 1 个重复项。

例如。

列表:

  1. 代码:1,等级:10
  2. 代码:1,等级:20
  3. 代码:2,等级:1

预期清单:

  1. 代码:1,等级:20
  2. 代码:2,等级:1

条件是重复元素的条件,抓住最高的那个Grade。我将如何编写 lambda 或 linq 表达式来做到这一点?

4

3 回答 3

5

您可以使用它GroupBy来执行此操作:

var results = items.GroupBy(item => item.Code)
                   .Select(g => g.OrderByDescending(i => i.Grade)
                   .First());
于 2012-07-11T20:01:51.880 回答
0

我建议你先GroupBy属性Code,然后选择Max组中每个元素的

于 2012-07-11T20:02:14.353 回答
0

就像是

list.GroupBy(item=>item.Code).Select(item=>new {code = item.Key, grade = item.Max(i=>i.Grade)}).ToList();
于 2012-07-11T20:04:34.110 回答