gpt4 book ai didi

c# - 如何让 LINQ 返回集合中具有最大值的对象的索引?

转载 作者:太空狗 更新时间:2023-10-30 00:27:46 25 4
gpt4 key购买 nike

我有一个不可变对象(immutable对象)的列表(在我的特定情况下是 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);

我看过How can I get LINQ to return the object which has the max value for a given property? ,并使用 Jon Skeet的 MaxBy 函数结合 Select 我可以做到:

var indexOfPointWithHighestItem2 = 
myList.Select((x, i) => new { Index = i, Value = x })
.MaxBy(x => x.Item2).Index;

但这会为我列表中的每个对象创建一个新对象,并且必须有更简洁的方法。大家有什么好的建议吗?

最佳答案

看起来有一个FindIndex List 上定义的方法非常适合此操作:

double max = myList.Max(t => t.Item2);
int index = myList.FindIndex(t => t.Item2 == max);

关于c# - 如何让 LINQ 返回集合中具有最大值的对象的索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5189477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com