LINQ to SQL中的多个Deferred WHERE子句表达式

时间:2009-08-15 00:57:00

标签: linq linq-to-sql where-clause

也许是一个简单的问题,我正在尝试从一个表中获取结果,其中Name列包含所有搜索项的数组。我正在创建一个查询并循环遍历我的搜索字符串,每次都分配query = query.Where(...);.似乎只使用了最后一个术语,我猜想因为我每次都试图限制同一个字段。如果我在每次迭代时调用.ToArray()。AsQueryable(),我可以获得我正在寻找的累积重新创建行为,但是只有使用deferred运算符才有一个简单的方法吗?

谢谢!

1 个答案:

答案 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);
}

......一切都应该没问题了。

如果不是这样,请提供您正在做的代码示例......