除了迭代集合,有没有办法返回具有最高绝对值的集合中的双精度值,而不会使集合中的值实际上是绝对值?
double[] vals = new double[] { 2.3, 1.7, -3.8};
vals.Max(v => Math.Abs(v)); // This returns 3.8 instead of -3.8
Run Code Online (Sandbox Code Playgroud)
要考虑的一种方法:
var max = vals
.OrderByDescending(z => Math.Abs(z))
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
或者,考虑使用 MoreLinq 的MaxBy。它比 my 和 Samvel 的解决方案都快,尤其是对于较大的输入集。
var max = vals.MaxBy(z => Math.Abs(z));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |