也许是一个简单的问题,我试图从名称列包含所有搜索词数组的表中获取结果。我正在创建一个查询并循环搜索字符串,每次分配 query = query.Where(...);。看来只使用了最后一个术语,我想是因为我每次都试图限制相同的字段。如果我在每次迭代时调用 .ToArray().AsQueryable() ,我可以获得我正在寻找的累积限制行为,但是否有一种仅使用延迟运算符来实现此目的的简单方法?
谢谢!
最佳答案
如果你正在做类似的事情:
foreach (int foo in myFooArray)
{
query = query.where(x => x.foo == foo);
}
...那么它只会使用最后一个,因为每个 where 条件都将包含对“foo”循环变量的引用。
如果您正在这样做,请将其更改为:
foreach (int foo in myFooArray)
{
int localFoo = foo;
query = query.where(x => x.foo == localFoo);
}
...一切都会恢复正常。
如果情况并非如此,请提供您正在执行的操作的代码示例...
关于linq - LINQ to SQL 中的多个延迟 WHERE 子句表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1280871/