C# 如何在C linq中生成和运算符?

C# 如何在C linq中生成和运算符?,c#,linq,C#,Linq,如何做到这一点 bWireData不能同时为true和false。您的逻辑中有一个缺陷。根据提供的代码 IEnumerable<WireUsrTgInfo> lstWireData = (from var in lstWireUsrTgInfo where var.bWireData == true && var.bWireData == false --> This is not working select var).AsEnu

如何做到这一点

bWireData不能同时为true和false。您的逻辑中有一个缺陷。

根据提供的代码

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 
编辑

不要在查询中使用var,它是由Monkieboy C关键字指定的上下文。需要明确的是:您可以使用它,但您必须避免这样做,因为它会造成混乱。

这永远不会起作用:其中bWireData==true&&bWireData==false是不合逻辑的,因为bWireData不能同时为true和false


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

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

不要将布尔数据与true或false进行比较。布尔数据实际上是一个问题的答案,它是真是假

var也是一个关键词


也不要在变量名中使用前缀,而是考虑更好的命名——HasWiReDATA,WiReServer TaGiFiFS。

< P> & &是正确的运算符。然而,正如其他海报所指出的那样,你现在的提问相当于说,如果奥巴马是总统,而奥巴马不是总统,请让我高兴。基本上,您已经建立了一个矛盾,它将始终评估为false,因此不会返回任何结果。另一方面,您可能有兴趣了解&&是一个条件and,这意味着只有在第一个项为真时才对第二个项进行计算,因此,如果结果不可避免地为假,则保存对第二个项的处理。

不要使用var,因为它是一个混淆的关键字。就是:var lstWireData=Enumerable.Empty;您不需要在末尾使用括号和aseneumerable。结果将是相同的。您的where子句将始终为false,因为实际上您正在执行var.bWireData!=var.bWireData当然永远是假的var实际上可以在那里使用,我也这么认为。试试看。我不知道,在其他语言中你不能这样做。删除单词“reserved”,因为它是一个关键字,但不是reserved。var不是reserved,但它是一个上下文关键字;你是对的,它不应该被用于混淆问题@Monkieboy:当然你们可以使用它,但你们并没有这样做,因为混淆的问题。是的,这进一步澄清了,但称它为“保留”关键字在技术上是错误的。它是一个“上下文”关键字。有点令人沮丧的是,它可以用作变量名,因为如果在编译过程中像真正的“reserved”关键字一样突出显示为警告,会使操作更轻松。
bool expectedValue = true; //OR False
IEnumerable<WireUsrTgInfo> lstWireData = (from var in lstWireUsrTgInfo
            where var.bWireData == expectedValue
            select var).AsEnumerable<WireUsrTgInfo>();
var query = from info in lstWireUsrTgInfo
            where info.bWireData // selects data which is true
            select info;