Проблема с использованием predicatebuilder в цикле foreach

У меня проблемы с построением предикатов в цикле 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, в основном используют одно и то же t из inputEnumerable, хотя, конечно, я хочу, чтобы каждое выражение, объединенное с помощью OR в Predicate, использовало другое t из inputEnumerable.

Я посмотрел на предикат в отладчике после цикла, и он выглядит как IL. В любом случае каждая лямбда выглядит точно так же.

Кто-нибудь может сказать мне, что я здесь делаю не так?

Спасибо,

Исаак

5
задан Isaac Bolinger 19 October 2011 в 02:56
поделиться