C# - 找到重复键时选择两个值中的最小值

标签 c# linq

使用 Linq 执行此操作的最佳方法是什么?

我有一个包含两个属性的列表:数字和百分比。

有时列表中有重复的数字:

 -----------------------------
 Number: 182 | Percentage: 15%
 Number: 182 | Percentage: 70%
 ...

当发现重复的 Number 时,我想选择两个百分比值中最小的对象,并将这些结果转移到一个新的 List 中。

最佳答案

尝试以下操作

var list = originalList
    .GroupBy(x => x.Number)
    .Select(x => x.OrderBy(y => y.Percentage).First())
    .ToList();

此查询将首先按 Number 值对项目进行分组。然后它将按百分比对每个组进行排序并选择第一个元素(最低)。

关于C# - 找到重复键时选择两个值中的最小值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878080/

相关文章:

c# - 创建新的 C# Web 应用程序时缺少某些组件?

c# - 将linq查询结果存储在Model中

c# - Linq OrderBy 特定值不在分组内排序

c# - 对collection进行一次操作,对费用加权平均求和

c# - Linq 查询返回复杂类型

c# - .net core 测试数据库集

c# - 更改引用参数内的引用

c#在 "using"代码块中执行带参数的SqlCommand

c# - CaSTLe Windsor激活错误IController,key "home"

c# - 当 "WHERE IN()"有数千个值时,如何使用 Nhibernate 检索数据? (sql参数太多)