我有一个实体框架查询如下;
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(不是最新的,刚刚发布的版本)。
提前致谢
Max不支持,但Abs支持;这样可以吗?否则你将不得不使用三元表达式。在 C# 中,我会这样做:
from t in Db.MyTable
let m = t.Col1 >= t.Col2 ? t.Col1 - t.Col2 : 0
where m + t.Col3 - t.Col4 > 0
但是,除非您有表达式索引,否则这在数据库级别将效率低下。所以我建议改用计算列。
| 归档时间: | 
 | 
| 查看次数: | 2010 次 | 
| 最近记录: |