我有一个对象列表,其中包含一些属性的重复项。我希望根据条件获得所有非重复的以及1个重复项。
例如。
解释
预期清单:
条件是重复元素的条件,抓住具有最高Grade
的元素。我如何编写lambda或linq表达式来执行此操作?
答案 0 :(得分:5)
您可以使用GroupBy
执行此操作:
var results = items.GroupBy(item => item.Code)
.Select(g => g.OrderByDescending(i => i.Grade)
.First());
答案 1 :(得分:0)
我建议您首先GroupBy
Code
属性,然后选择组中每个元素的Max
答案 2 :(得分:0)
像
这样的东西list.GroupBy(item=>item.Code).Select(item=>new {code = item.Key, grade = item.Max(i=>i.Grade)}).ToList();