想象一下,你有一个这样的课:
class Foo {
string key;
int value;
}
Run Code Online (Sandbox Code Playgroud)
你如何选择具有最高价值的Foo IEnumeralbe<Foo>?
一个基本问题是保持迭代次数较低(即1),但这会影响可读性.毕竟,我能找到的最好的东西是这样的:
IEnumerable<Foo> list;
Foo max = list.Aggregate ((l, r) => l.value > r.value ? l : r);
Run Code Online (Sandbox Code Playgroud)
你能想到一个更好的方法吗?
编辑:list.OrderByDescending(l => l.value).First();是我的首选,但它不是O(n).
您可以从Jon Skeet的MoreLinq项目中获取MaxBy LINQ扩展方法.那就是:
Foo max = list.MaxBy(f => f.value);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
868 次 |
| 最近记录: |