假设您有一个给定长度的边列表(作为双精度)。现在你想找到最大长度的边。在 LINQ 中是否有一种简单的方法可以做到这一点?
当然,我可以先用 Max 计算最大值,然后进行比较,但首先,这将是两次计算,其次比较双精度值是否相等是一件坏事。
有什么建议么?
Jon SkeetMaxBy
在他的 MoreLINQ 库中有:http ://code.google.com/p/morelinq
另外,看看Observable.MaxBy
或者看看
e.OrderByDescending(x => x.SomeProperty).First();
sehe 打败了我,得到了正确的答案,所以我会用它来说明一个可能有缺陷的假设:
...其次比较双打的平等是一件坏事。
IIRC比较复制的 double 是否相等应该没有任何问题。毕竟它只有 8 个字节。问题出现在计算中 - 或使用来自不同来源的两个相似值。
也就是说,害怕比较浮点数是件好事:P