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

C# Linq-如何通过函数运行每个项,然后选择具有最高函数结果的项,c#,linq,C#,Linq,我想做的基本上是 var max = things.Select(t => ExpensiveFunc(t)).Max(); var ThingWithMaxResult = things.Where(t => ExpensiveFunc(t) == max).First(); 但是我不想在每个元素上运行两次ExpensiveFunc 我正在学习LINQ,所以我想知道LINQ的方法。否则,我通常会创建一个事物和结果的数组,然后选择结果最高的数组。您可以通过函数调用(降序)排序,然后

我想做的基本上是

var max = things.Select(t => ExpensiveFunc(t)).Max();
var ThingWithMaxResult = things.Where(t => ExpensiveFunc(t) == max).First();
但是我不想在每个元素上运行两次
ExpensiveFunc


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

您可以通过函数调用(降序)排序,然后选择第一个:

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