用条件过滤出不同的元素

Sha*_*ean 1 c# linq lambda

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

例如.

列表:

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

预期清单:

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

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

Ree*_*sey 5

你可以GroupBy这样做:

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