linq - 使用 LINQ 从多行多列中获取最大值?

标签 linq linqpad

我正在使用 LINQPad 来评估我的 linq 查询。我的查询是这样的:

from o in MyTableFirst
join p in MyTableSecond on o.TheName equals p.TheName
where p.TheName == "CBA-123" && !p.Removed && 
   (o.ReturnPeriod ==100 || o.ReturnPeriod ==10)
select new {
   HMax1 = o.MaxValue1,
   HMax2 = o.MaxValue2,
   HMax3 = o.MaxValue3
}


此查询可以返回 0 或一定数量的行。

在 LINQPad 中,它返回如下内容:

HMax1   HMax2   HMax3
21.1                 22.5
         24.6        11.5

现在,我如何获取这些返回行和列的最大值?
我预计 24.6 返回。

谢谢

最佳答案

这个怎么样:

(from o in db.MyTableFirsts
 join p in db.MyTableSeconds on o.TheName equals p.TheName
 where p.TheName == "CBA-123" && !p.Removed &&
 (o.ReturnPeriod == 100 || o.ReturnPeriod == 10)
  select new
  {
    Maximum = Math.Max(
       Math.Max((float)(o.MaxValue1 ?? 0), (float)(o.MaxValue2 ?? 0)),
       (float)(o.MaxValue3 ?? 0)
    )
  }).OrderByDescending(o => o.Maximum).FirstOrDefault();

或者可以使用 .Max(o => o) 代替 .OrderByDescending(o => o.Maximum).FirstOrDefault()

关于linq - 使用 LINQ 从多行多列中获取最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15962396/

相关文章:

c# - 查找未一起查看的两个元素的组合(LINQ、SQL 或 C#)

java - C# + linq(concat) 重写为 java

c# Group 然后排序元组列表 <T1,T2,T3>

c# - 从LINQ查询返回对象而不将其强制转换为列表

c# - Visual Studio 中的 WriteLine 就像在 LinqPad 中一样

linqpad - 有没有办法为 LINQPad 应用程序获取 IWin32Window?

c# - 从 IEnumerable<Dictionary<string, object>> 获取键和值

linq - 我可以在 LINQ 中使用递增计数变量吗?

c# - Linq .Select 方法问题使用 LinqPad

linqpad - 如何在 Visual Studio 中使用 LinqPad 生成上下文