也许是一个简单的问题,我试图从名称列包含所有搜索词数组的表中获取结果。我正在创建一个查询并遍历我的搜索字符串,每次分配 query = query.Where(...);。似乎只使用了最后一个术语,我想是因为我每次都试图限制相同的字段。如果我在每次迭代中调用 .ToArray().AsQueryable() ,我可以获得我正在寻找的累积限制行为,但是是否有一种简单的方法可以仅使用延迟运算符来做到这一点?
谢谢!
也许是一个简单的问题,我试图从名称列包含所有搜索词数组的表中获取结果。我正在创建一个查询并遍历我的搜索字符串,每次分配 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);
}
......一切都应该再次好起来了。
如果这不是正在发生的事情,请提供您正在做的事情的代码示例...