2010-02-09 72 views
3

我敢肯定,这个问题的答案是:“你不能这样做”或“不,不,你误会......”,而是:LINQ到SQL编写翻译功能

我有一个LINQ类的事情,这会很乐意执行此:

var thingsWithAandB = from t in db.things 
         where t.propA.HasValue && t.propB.HasValue 
         select t; 

但我这个做了很多,所以我想:

partial class thing 
{ 
    public bool hasAandB 
    { 
     get 
     { 
      return propA.HasValue && propB.HasValue; 
     } 
    } 
} 

然后:

var thingsWithAandB = from t in db.things where t.hasAandB select t; 

但当然,当我这样做时,我得到“无法将其转化为SQL”错误。我知道这是因为在SQL查询中调用方法是不可能的,因为我的代码和数据库是分开的。

这是怎么回事?这是不可能的吗?

回答

-1

您可以使用扩展方法:

public static class MyExtensions{ 
    public static bool HasAandB(this thing t){ 
     return t.propA.HasValue && t.propB.HasValue; 
    } 
} 

,然后使用它:

var thingsWithAandB = from t in db.things 
        where t.HasAandB() 
        select t; 

编辑
对不起,这将可能给你同样的例外。 ..

+0

我只是尝试使用扩展方法,并获得相同的'方法'布尔HasAandB(东西)'没有支持转换到SQL。 “错误... – Greg 2010-02-09 15:58:00