Linq - 如何通过函数运行每个项目,然后选择具有最高函数结果的项目

时间:2017-06-16 20:11:59

标签: c# linq

我想要做的基本上是

var max = things.Select(t => ExpensiveFunc(t)).Max();
var ThingWithMaxResult = things.Where(t => ExpensiveFunc(t) == max).First();

但我不想在每个元素上运行ExpensiveFunc两次。

我正在学习LINQ,所以我想知道LINQ这样做的方法。否则我通常会创建一个事物和结果数组,然后选择具有最高结果的数组。

1 个答案:

答案 0 :(得分:0)

您可以通过函数调用(降序)进行排序并获取第一个:

var max = things.OrderByDescending(ExpensiveFunc).First();