3
IEnumerable<WireUsrTgInfo> lstWireData = 
    (from var in lstWireUsrTgInfo
     where var.bWireData == true && var.bWireData == false --> This is not working
     select var).AsEnumerable<WireUsrTgInfo>();

这个怎么做 ...

4

5 回答 5

5

根据提供的代码

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#关键字。需要明确的是:您可以使用它,但您必须避免这样做,因为它会造成混乱。

于 2012-11-07T13:22:51.260 回答
3

bWireData不能同时为真和假。你的逻辑有问题。

于 2012-11-07T13:22:17.987 回答
2

正如其他答案所述,您的过滤条件是错误的。但我还想补充一点:

不要将布尔数据与trueor进行比较false。布尔数据实际上是对问题的答案true

var query = from info in lstWireUsrTgInfo
            where info.bWireData // selects data which is true
            select info;

也是var一个关键字;

也不要在变量名中使用前缀(考虑更好的命名代替 - HasWireData, wireUserTagInfos)。

于 2012-11-07T13:26:16.243 回答
0

这永远行不通:这 WHERE bWireData == true && bWireData == false是不合逻辑的,因为 bWireData 不能同时为真和假。

var是一个关键字,为避免混淆,因此不应用作变量的名称。

于 2012-11-07T13:24:07.943 回答
0

&& 是正确的运算符。但是,正如其他海报所指出的那样,您的查询就相当于说“如果奥巴马是总统而奥巴马不是总统,请让我高兴”。基本上你已经建立了一个矛盾,它总是会评估为假,因此不会返回任何结果。顺便说一句,您可能有兴趣了解 && 是一个条件与,这意味着只有在第一项为真时才评估第二项,因此如果结果不可避免地为假,则可以保存对第二项的处理。

于 2012-11-07T15:34:17.407 回答