如何让LINQ返回集合中具有最大值的对象的索引?
我有一个不可变对象列表(在我的特定情况下是一个
Tuple<double, double>
的列表),我想更改具有最高Item2值的那个。
理想情况下会有一个我可以使用的IndexOfMaxBy函数,所以我可以这样做:
var indexOfPointWithHighestItem2 = myList.IndexOfMaxBy(x => x.Item2);
var original = myList[indexOfPointWithHighestItem2];
myList[indexOfPointWithHighestItem2] =
new Tuple<double, double>(original.Item1, original.Item2 - 1);
我已经看到如何让LINQ返回具有给定属性的最大值的对象?并使用Jon Skeet的MaxBy函数与Select我可以做到:
var indexOfPointWithHighestItem2 =
myList.Select((x, i) => new { Index = i, Value = x })
.MaxBy(x => x.Item2).Index;
但是这会为我列表中的每个对象创建一个新对象,并且必须有一个更简洁的方法。有没有人有什么好建议?
没有找到相关结果
已邀请:
2 个回复
僻朵庙惩竣
extension。 实施例(未测试):
用法:
细瑞
上定义了一个
方法,对于这个方法是完美的: