我有句子linq来过滤一个DataTable:
string V = @"V";
var DTError = from DTError1 in DT.AsEnumerable()
.Where(r => ( (r.Field<string>("TIPO_DE_DOCUMENTO") != V) ))
select DTError1;
这个linq有效;但是当我在linq不起作用的地方添加另一个条件时(见下文)
string V = @"V";
string M = @"M";
var DTError = from DTError1 in DT.AsEnumerable()
.Where(r => ( (r.Field<string>("TIPO_DE_DOCUMENTO") != V) )
|| (r.Field<string>("TIPO_DE_DOCUMENTO") != M))
select DTError1;
为什么会这样?
我知道这是一个非常简单的问题,但文档对我没有帮助。
感谢。
答案 0 :(得分:5)
我认为您需要一个AND运算符(&amp;&amp;)而不是OR(||)。
答案 1 :(得分:1)
我认为你的括号有问题,你希望它们都在第一个中:
.Where(r => r.Field<string>("TIPO_DOC") != V)
|| (r.Field<string>("TIPO_DOC") != E) )
答案 2 :(得分:1)
尝试使用&&
代替||
string V = @"V";
string E = @"E";
var DTError = from DTError1 in DT.AsEnumerable()
.Where(r => (r.Field<string>("TIPO_DOC") != V) &&
(r.Field<string>("TIPO_DOC") != E))
select DTError1;
或强>
string V = @"V";
string E = @"E";
var DTError = from DTError1 in DT.AsEnumerable()
.Where(r => (r.Field<string>("TIPO_DOC") != V))
.Where(r => (r.Field<string>("TIPO_DOC") != E))
select DTError1;
答案 3 :(得分:1)
在这种情况下,您确实希望使用&amp;&amp;而不是||。
尝试使用简明语言表示您尝试使用where子句进行查询...
如果我有一系列汽车,我想选择满足以下条件的所有汽车:
汽车不是红色或汽车不是蓝色
我将获得所有汽车,因为任何不满足第一部分(不是红色)的汽车必须满足第二部分(毕竟,只有红色汽车不满足第一部分,红色汽车是不是蓝色的。)
在相反的情况下,我已经看到了很多变化,当试图获得所有蓝色汽车和所有红色汽车时,在这种情况下,人们经常使用“where color = red&amp;&amp; color == blue”。 出于类似的原因,这不会产生预期的结果。