2010-04-15 57 views
3

我有一个实体框架查询如下;是否有与Math.Max for 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(不是最新的,刚刚发布的版本)。

在此先感谢

回答

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 

然而,这将是在数据库级别低效率的,除非你有一个表达指数。所以我会建议一个计算列。

+1

我恢复为将数据库实体放回内存,并在对象集合上使用Math.Max。你的答案也可以,所以谢谢。 – 2010-04-15 16:17:29

相关问题