代码之家  ›  专栏  ›  技术社区  ›  Carlton Jenke

linq Contains语句中的错误-是否有修复或解决方法?

  •  2
  • Carlton Jenke  · 技术社区  · 17 年前

    我在Linq中的Contains语句中发现了一个bug(不确定它是否真的在Linq或LINQtoSQL中),我想知道是否有其他人看到了这个bug,以及是否有修复或解决方法。

    如果执行包含操作的querysource中包含10个以上的项,则它不会将这些项正确地传递给SQL查询。很难解释它的作用,一个例子可以最好地说明它。

    如果查看原始查询,参数如下所示:

    @P0 = 'aaa'
    @P1 = 'bbb'
    @P2 = 'ccc'
    ... [@P3 through @P9]
    @P10 = '111'
    @P11 = '222'
    ... [@p12 through @P19]
    @P20 = 'sss'
    ... [@P21 through @P99]
    @P100 = 'qqq'
    

    将值传递到最终查询(已解析所有参数)时,它已解析参数,就像传递的值一样:

    @P0 = 'aaa'
    @P1 = 'bbb'
    @P2 = 'ccc'
    ...
    @P10 = 'bbb'0
    @P11 = 'bbb'1
    ...
    @P20 = 'ccc'0
    ...
    @P100 = 'bbb'00
    

    因此,参数解析看起来只在 @P 并解析,然后添加参数名称末尾的所有内容。

    至少这是VisualStudio的SQLServer查询可视化工具插件显示查询所做的事情。

    真奇怪。

    因此,如果有人有建议,请分享。谢谢

    更新:

    2 回复  |  直到 10 年前
        1
  •  1
  •   Carlton Jenke    17 年前

    我看得越多,在运行了更多测试之后,我认为这个bug可能在VisualStudio的SQLServer查询可视化工具插件中,而不是在LINQtoSQL本身中。因此,情况并不像我想象的那么糟糕——查询将返回正确的结果,但您不能相信可视化工具所显示的内容。不太好,但比我想象的要好。

        2
  •  0
  •   FlySwat    17 年前

    在做出判断之前,尝试实际查看datacontext的输出。

    Log()将为您提供生成的SQL。

    推荐文章