linq - LINQ to SQL 中的多个延迟 WHERE 子句表达式

标签 linq linq-to-sql where-clause

也许是一个简单的问题,我试图从名称列包含所有搜索词数组的表中获取结果。我正在创建一个查询并循环搜索字符串,每次分配 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/

相关文章:

c# - LINQ - 如何编写查询来设置变量 bool True 或 False

sql - vb.net linq 插入新记录

sql - 使用 HAVING 还是 WHERE?

sql - 可选的 where 子句取决于函数参数

c# - 构建 Linq2Sql 查询时如何将对象的属性(而不是对象)传递给表达式?

c# - 通过System.Linq在C#中获取元素的属性名称和值

c# - Linq 获得前 9 组加上所有其他组的总和作为第 10 组

linq-to-sql - Linq 到 SQL : how to aggregate without a group by?

mysql - 需要帮助简化 SQL 查询以避免 WHERE 和 SELECT 中的冗余数学运算

c# - 使用 linq C# 动态排序