基于布尔变量c#

时间:2016-10-11 00:52:36

标签: c# linq

这对c#语言来说只是一个疑惑问题。我已经检查过MSDN运营商,看不到任何关闭。

当我使用LINQ to XML检索一些元素时,我在WHERE方法中传递一些lambda表达式来选择特定的元素。

但我可以看到我正在使用以下声明,这让我有点恼火。

 bool myCondition;




// some codes
  var elements = xDocument.Descendants("items").
                   Where(x=>x.Attribute("id")!=null&&
                  (myCondition)x.Element("blah").Value=="blah":
                    x.Element("blah").Value!="blah").ToList();

但不知怎的,我一直在写代码如下(不明白为什么:)):

// some codes
  var elements = xDocument.Descendants("items").
                   Where(x=>x.Attribute("id")!=null&&
                  x.Element("blah").Value?myCondition="blah").ToList();

我看到boolean myCondition为!(感叹号)或=(等号)。 if if then = if if then!。

我只是想知道将来添加这些类型的运营商是否有可能?还是有一些更好的操作员可以缩短我的病情?

这可以与其他任何编程语言一起使用吗?也许是javascript?

如果你要降级,请说明原因。

1 个答案:

答案 0 :(得分:1)

您可以在没有条件运算符的情况下在C#中表达该条件:

myCondition?
    xDocument.Element("item").Value=="blah":
    xDocument.Element("item").Value!="blah"

与:

相同
myCondition == (xDocument.Element("item").Value == "blah") 

它是否更具可读性是一个悬而未决的问题。您可以考虑使用具有良好名称的辅助方法。