我很确定答案是“你不能那样做”或“不,不,你误解了......”,但是:
我有一个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查询中调用方法是不可能的,因为我的代码和数据库是分开的。
这样做的方法是什么?这不可能吗?
答案 0 :(得分:4)
这是完全可能的。 Damien Guard(damieng.com)在他的博客上有一个样本,展示了如何做到这一点。
http://damieng.com/blog/2009/06/24/client-side-properties-and-any-remote-linq-provider
答案 1 :(得分:-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;
修改强>
对不起,这可能会给你同样的例外......