Linq 通过比较选择不同的值

标签 linq

我有一个对象列表。例如。 List<coin>它们包含一个字符串(denom)和一个 int(年)。
如果列表包含:

"Quarter", 1954
"Quarter", 1990
"Penny", 1925  
"Nickel", 1900 
"Nickel", 2000

我怎样才能得到一个结果列表,其中包含最近一年的唯一值?例如。:
"Quarter", 1990
"Penny", 1925
"Nickel", 2000

最佳答案

您可以通过按名称分组,然后排序并获取第一个结果,或使用类似 MaxBy 的内容来完成此操作。来自 MoreLINQ :

var query = coins.GroupBy(x => x.Name)
                 .Select(g => g.MaxBy(x => x.Year));

或者
var query = coins.GroupBy(x => x.Name)
                 .Select(g => g.OrderByDescending(x => x.Year).First());

关于Linq 通过比较选择不同的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5770618/

相关文章:

c# - 使用 LINQ 的多重排序

c# - 枚举哈希集并从中删除元素

c# - Linq to SQL 一对多关系

.net - 动态查询变量无法解析 IQueryable 方法

c# - 将数组加入 EF 查询

linq - 如何对 Linq 查询分组结果进行排序

linq - Linq查询,子查询为逗号分隔值

c# - 我可以使用什么 Linq 查询按类别返回所有产品的计数?

c# - 如何在 where 子句中使用 LINQ Except()

c# - 使用已编译的 Lambda 表达式而不是 Activator.CreateInstance 来初始化 SoapHttpClientProtocol 对象