有没有人有更简洁的方法来使用 linq to entities 来做到这一点?
我正在尝试获取每个组中具有最高 X、Y 或 Z 的项目,例如最大值( X, Y, Z )
var points = from g in groupedData
from ep in g
where (ep.X > ep.Y ?
ep.X > ep.Z ? ep.X : ep.Z
: ep.Y > ep.Z ? ep.Y : ep.Z)
== g.Max(e => e.X > e.Y ?
e.X > e.Z ? e.X : e.Z
: e.Y > e.Z ? e.Y : e.Z)
select ep;
最佳答案
var points = from g in groupedData
let gMax = g.Max(e => e.X > e.Y ?
(e.X > e.Z ? e.X : e.Z)
: (e.Y > e.Z ? e.Y : e.Z))
from ep in g
where ep.X == gMax
|| ep.Y == gMax
|| ep.Z == gMax
select ep;
PS:Linq2SQL 还是 Linq2Entities?因为你标记了“EF”!
编辑:我刚刚测试成功了:
var points = from g in groupedData
let gMax = g.Max(e => new int[] { e.X, e.Y, e.Z }.Max())
from ep in g
where ep.X == gMax
|| ep.Y == gMax
|| ep.Z == gMax
select ep;
您确认它适用于您的情况吗?
关于c# - Linq to SQL 中的多值比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15140035/