我有一个实体框架查询,如下所示;
From T In Db.MyTable
Where (T.Col1 - T.Col2) + T.Col3 - T.Col4 > 0 _
Select T
我现在需要确保括号中的部分'(T.Col1 - T.Col2)'不会低于零。
在.Net中,我将其编码如下(但显然EF不喜欢Math.Max)。
From T In Db.MyTable
Where Math.Max(T.Col1 - T.Col2,0) + T.Col3 - T.Col4 > 0 _
Select T
有一种简单的方法吗?我使用的是EF 2.0(不是最新发布的版本)。
提前致谢
答案 0 :(得分:2)
Max
isn't supported, but Abs
is;那会吗?否则你将不得不使用三元表达式。在C#中,我会这样做:
from t in Db.MyTable
let m = t.Col1 >= t.Col2 ? t.Col1 - t.Col2 : 0
where m + t.Col3 - t.Col4 > 0
然而,除非你有表达式索引,否则在数据库级别这将是低效的。所以我建议使用计算列。