c# - 如何使用 LINQ 选择具有最高值的项目?

标签 c# linq

想象一下,你有一个这样的类(class):

class Foo {
    string key;
    int value;
}

您如何从 IEnumeralbe<Foo> 中选择具有最高值的 Foo ?

一个基本问题是保持迭代次数较低(即 1 次),但这会影响可读性。毕竟,我能找到的最好的东西是这样的:
IEnumerable<Foo> list;
Foo max = list.Aggregate ((l, r) => l.value > r.value ? l : r);

你能想出更好的方法吗?

编辑:list.OrderByDescending(l => l.value).First();是我的首选,但不是 O(n)。

最佳答案

你可以捕获MaxBy来自 Jon Skeet 的 MoreLinq 的 LINQ 扩展方法项目。那么它只是:

Foo max = list.MaxBy(f => f.value);

关于c# - 如何使用 LINQ 选择具有最高值的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3004204/

相关文章:

c# - WPF 数据绑定(bind) : Cancelled property change - Combobox misaligns

c# - 将过滤器字符串转换为 C# 委托(delegate)

c# - 开始使用 Linq,我需要什么?

c# - 分页 API 调用使用 Linq to Sql OrderBy 与字符串参数和反射

c# - 从选择查询返回 bool 值

c# - 按月分组列表

c# - Linq 查询和 Foreach 对来自 SQL 数据库的大量记录

c# - 从 IQueryable<T> 转换为 T

c# - 你会如何测试它?有多少测试?

c# - Gridview 将相似的行归为一组