我有一个对象列表,其中有一些属性重复。我想根据条件获取所有非重复项以及 1 个重复项。
例如。
列表:
- 代码:1,等级:10
- 代码:1,等级:20
- 代码:2,等级:1
预期清单:
- 代码:1,等级:20
- 代码:2,等级:1
条件是重复元素的条件,抓住最高的那个Grade
。我将如何编写 lambda 或 linq 表达式来做到这一点?
您可以使用它GroupBy
来执行此操作:
var results = items.GroupBy(item => item.Code)
.Select(g => g.OrderByDescending(i => i.Grade)
.First());
我建议你先GroupBy
属性Code
,然后选择Max
组中每个元素的
就像是
list.GroupBy(item=>item.Code).Select(item=>new {code = item.Key, grade = item.Max(i=>i.Grade)}).ToList();