【问题标题】:Multiple Defered WHERE clause expressions in LINQ to SQLLINQ to SQL 中的多个延迟 WHERE 子句表达式
【发布时间】:2009-08-15 00:56:59
【问题描述】:

也许是一个简单的问题,我正在尝试从名称列包含所有搜索词数组的表中获取结果。我正在创建一个查询并遍历我的搜索字符串,每次分配 query = query.Where(...);。似乎只使用了最后一个术语,我想是因为我每次都试图限制相同的字段。如果我在每次迭代中调用 .ToArray().AsQueryable() ,我可以获得我正在寻找的累积限制行为,但是有一种简单的方法可以仅使用延迟运算符来做到这一点吗?

谢谢!

【问题讨论】:

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


    【解决方案1】:

    如果你正在做类似的事情:

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

    ...一切都会好起来的。

    如果这不是正在发生的事情,请提供您正在做的事情的代码示例...

    【讨论】:

    • 这是一种奇怪的边缘情况,无法直接看出发生了什么... :) ...只是因为代码没有像我们习惯的那样“内联”执行与大多数其他 C# 或 vb 代码...
    猜你喜欢
    • 2011-10-03
    • 2012-05-06
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多