用条件过滤掉不同的元素

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

例如。

列表:

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

预期清单:

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

条件是重复元素的条件,抓住具有最高Grade元素。 如何编写lambda或linq表达式来执行此操作?

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

 var results = items.GroupBy(item => item.Code) .Select(g => g.OrderByDescending(i => i.Grade) .First()); 

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

就像是

 list.GroupBy(item=>item.Code).Select(item=>new {code = item.Key, grade = item.Max(i=>i.Grade)}).ToList();