foreach ループで述語を作成するのに問題があります。列挙子が現在オンになっている値を含む変数は、述語に入れる必要があるものです。
そう、
IQueryable query = getIQueryableSomehow();
Predicate = PredicateBuilder.False<SomeType>();
foreach (SomeOtherType t in inputEnumerable)
{
Predicate = Predicate.Or( x => x.ListInSomeType.Contains(t) )
}
var results = query.Where(Predicate);
私を失敗させています。Predicate で一緒に ORed された式は、基本的にすべて inputEnumerable から同じ t を使用します。もちろん、Predicate に ORed された各式が inputEnumerable とは異なる t を使用するようにしたい場合です。
ループの後にデバッガーで述語を調べたところ、IL のように見えます。とにかく、そこにある各ラムダはまったく同じに見えます。
ここで私が間違っている可能性があることを誰かに教えてもらえますか?
ありがとう、
アイザック