IEnumerable<WireUsrTgInfo> lstWireData =
(from var in lstWireUsrTgInfo
where var.bWireData == true && var.bWireData == false --> This is not working
select var).AsEnumerable<WireUsrTgInfo>();
这个怎么做 ...
根据提供的代码
var.bWireData == true && var.bWireData == false
它不能工作,因为同一个变量不能同时等于两个相反的值。
如果你需要参数化,你可以这样做:
bool expectedValue = true; //OR False
IEnumerable<WireUsrTgInfo> lstWireData = (from var in lstWireUsrTgInfo
where var.bWireData == expectedValue
select var).AsEnumerable<WireUsrTgInfo>();
编辑
并且不要var
在查询中使用,它是上下文(如 Monkieboy 所说)C#
关键字。需要明确的是:您可以使用它,但您必须避免这样做,因为它会造成混乱。
bWireData
不能同时为真和假。你的逻辑有问题。
正如其他答案所述,您的过滤条件是错误的。但我还想补充一点:
不要将布尔数据与true
or进行比较false
。布尔数据实际上是对问题的答案true
。
var query = from info in lstWireUsrTgInfo
where info.bWireData // selects data which is true
select info;
也是var
一个关键字;
也不要在变量名中使用前缀(考虑更好的命名代替 - HasWireData
, wireUserTagInfos
)。
这永远行不通:这 WHERE bWireData == true && bWireData == false
是不合逻辑的,因为 bWireData 不能同时为真和假。
var
是一个关键字,为避免混淆,因此不应用作变量的名称。
&& 是正确的运算符。但是,正如其他海报所指出的那样,您的查询就相当于说“如果奥巴马是总统而奥巴马不是总统,请让我高兴”。基本上你已经建立了一个矛盾,它总是会评估为假,因此不会返回任何结果。顺便说一句,您可能有兴趣了解 && 是一个条件与,这意味着只有在第一项为真时才评估第二项,因此如果结果不可避免地为假,则可以保存对第二项的处理。