我在 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,当然我希望每个表达式 ORed 到 Predicate 使用 inputEnumerable 中的不同 t。
我在循环之后查看了调试器中的谓词,它看起来像 IL。无论如何,那里的每个 lambda 看起来都完全相同。
谁能告诉我我在这里可能做错了什么?
谢谢,
艾萨克