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はwhere条項を次のように結合しますAND

EFでを実行する唯一の方法は、ORへの1回の呼び出しで述語を配置することです。IQueryable.Where

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

OR のように 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 に答える