2

我有一个返回的方法

Expression<Func<T, bool>> 

当我在 EF 的 where 子句中使用它作为谓词时,这可以正常工作,直到我尝试使用 Expression.Or() 向谓词添加更多项目时,我遇到了以下异常:

参数“xxx”未绑定在指定的 LINQ to Entities 查询表达式中。

有没有办法解决这个问题?究竟是什么原因造成的?

解决了

使用http://blogs.msdn.com/b/meek/archive/2008/05/02/linq-to-entities-combining-predicates.aspx

4

3 回答 3

2

在 EF 中,如果您调用

IQueryable<T> query = ...
query.Where( predicate 1 ).Where( predicate 2 )...

然后 EF 将whereAND

EF 中唯一的方法OR是将谓词放在一次调用中IQueryable.Where

IQueryable<T> query = ...
query.Where( predicate 1 || predicate 2 )...
于 2013-03-20T09:15:15.143 回答
2

要撰写或喜欢 AND,您可以使用PredicateBuilder

于 2013-03-20T09:42:24.287 回答
-1

要在 OR 关系中组合谓词,您可以执行以下操作:

predicate = Expression.Lambda<Func<T, bool>>(Expression.Or(predicate.Body, newPredicate.Body), newPredicate.Parameters);
于 2013-03-26T06:03:46.290 回答