Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net linq Contains语句中的错误-是否有修复或解决方法?_.net_Linq - Fatal编程技术网

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

.net linq Contains语句中的错误-是否有修复或解决方法?,.net,linq,.net,Linq,我在Linq中的Contains语句中发现了一个bug(不确定它是否真的在Linq或LINQtoSQL中),我想知道是否有其他人看到了这个bug,以及是否有修复或解决方法 如果执行包含操作的querysource中包含10个以上的项,则它不会将这些项正确地传递给SQL查询。很难解释它的作用,一个例子可以最好地说明它 如果查看原始查询,参数如下所示: @P0 = 'aaa' @P1 = 'bbb' @P2 = 'ccc' ... [@P3 through @P9] @P10 = '111' @P1

我在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查询可视化工具插件显示查询所做的事情

真奇怪

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

更新:

我已经将原来的linq语句重写为现在使用的join而不是Contains语句,但是我仍然想知道是否有办法解决这个问题。

我越看它,并且在运行了更多的测试之后,我认为错误可能在Visual Studio的Sql Server查询可视化工具插件中,而不是在linq to Sql本身中。因此,情况并不像我想象的那么糟糕——查询将返回正确的结果,但您不能相信可视化工具所显示的内容。不太好,但比我想象的要好。

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


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

这将是一个特殊的LINQ to SQL错误,而不是一般的LINQ是的,我相信您是对的。可以理解的是,它不是在linq语言中,而是在SQL的解释器中。