如何使用linq查找具有最大值的项目?

use*_*622 54 c# linq max

看看下表:

Item          Value
A                10
b                50
c                90
Run Code Online (Sandbox Code Playgroud)

我想找到这个项目maximum value.我可以通过使用group by或得到它orderding,但不知何故,我有一种感觉,应该有一个更直接的方式.我对吗?

Ser*_*kiy 114

使用EF或LINQ to SQL:

var item = db.Items.OrderByDescending(i => i.Value).FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

使用LINQ to Objects我建议使用morelinq扩展MaxBy(从nuget获取morelinq):

var item = items.MaxBy(i => i.Value);
Run Code Online (Sandbox Code Playgroud)

  • @ user1784622 LINQ的最大函数将返回最大值,而不是具有最大值的项.即你的物品,你会得到'90` (4认同)
  • 是的,微软仍然没有将MaxBy添加到标准的Enumerable扩展中,这是奇怪的,因为有多少人想要使用它.至少我们有Jon Skeet的morelinq.:) (4认同)
  • @ user1784622我认为这很简单. (3认同)
  • +1.如果由于某种原因你不能使用morelinq你可以实现自定义比较器并使用相应版本的.Net版Max ... (2认同)