プロパティによっていくつかの重複があるオブジェクトのリストがあります。条件に基づいて、すべての非重複と重複の 1 つを取得したいと思います。
たとえば。
リスト:
- コード:1、グレード:10
- コード:1、グレード:20
- コード:2、グレード:1
期待されるリスト:
- コード:1、グレード:20
- コード:2、グレード:1
条件は、重複した要素の条件であり、最も高いものを取得しGrade
ます。これを行うには、ラムダ式または 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();