我想要做的基本上是
var max = things.Select(t => ExpensiveFunc(t)).Max();
var ThingWithMaxResult = things.Where(t => ExpensiveFunc(t) == max).First();
但我不想在每个元素上运行ExpensiveFunc
两次。
我正在学习LINQ,所以我想知道LINQ这样做的方法。否则我通常会创建一个事物和结果数组,然后选择具有最高结果的数组。
答案 0 :(得分:0)
您可以通过函数调用(降序)进行排序并获取第一个:
var max = things.OrderByDescending(ExpensiveFunc).First();