У меня проблемы с построением предикатов в цикле 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);
подводит меня. Все выражения ORed вместе в Predicate в основном все используют один и тот же t из inputEnumerable, когда, конечно, я хочу, чтобы каждое выражение ORed в Predicate использовало другой t из inputEnumerable.
Я посмотрел на предикат в отладчике после цикла, и он выглядит как IL. В любом случае каждая лямбда выглядит точно так же.
Может кто-нибудь сказать мне, что я могу делать здесь не так?
Спасибо
Isaac