是否有类似于Math.Max for Entity Framework的功能?

时间:2010-04-15 10:34:22

标签: entity-framework

我有一个实体框架查询,如下所示;

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(不是最新发布的版本)。

提前致谢

1 个答案:

答案 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

然而,除非你有表达式索引,否则在数据库级别这将是低效的。所以我建议使用计算列。