也许是一个简单的问题,我正在尝试从一个表中获取结果,其中Name列包含所有搜索项的数组。我正在创建一个查询并循环遍历我的搜索字符串,每次都分配query = query.Where(...);.似乎只使用了最后一个术语,我猜想因为我每次都试图限制同一个字段。如果我在每次迭代时调用.ToArray()。AsQueryable(),我可以获得我正在寻找的累积重新创建行为,但是只有使用deferred运算符才有一个简单的方法吗?
谢谢!
答案 0 :(得分:6)
如果您正在执行以下操作:
foreach (int foo in myFooArray)
{
query = query.where(x => x.foo == foo);
}
...然后它只会使用最后一个,因为每个条件都包含对'foo'循环变量的引用。
如果您正在执行此操作,请将其更改为:
foreach (int foo in myFooArray)
{
int localFoo = foo;
query = query.where(x => x.foo == localFoo);
}
......一切都应该没问题了。
如果不是这样,请提供您正在做的代码示例......