2016-10-11 147 views
-2

這只是一個奇怪的c#語言問題。我檢查了MSDN運營商,看不到任何接近。基於布爾變量的條件c#

當我使用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(); 

我有種看到布爾myCondition爲(驚歎號)或=(等號)! 。 if true then = if false then!。

我只是想知道未來有沒有可能添加這些類型的操作符?或者有更好的運營商可以縮短我的病情?

這可以與其他任何編程語言一起使用嗎?也許是JavaScript?

如果您正在降級,請說出原因。

+0

我不明白問題是什麼以及你想做什麼。您需要在Where參數中傳遞布爾條件。在'(myCondition)'之後你缺少'?'的第一個代碼塊。第二個塊不通過bool條件,'myCondition =「blah」'會出錯。 – kurakura88

+0

代碼沒有問題。我想要做的是縮短我寫的代碼量。取決於一個布爾值,我會檢查它是否應返回屬性值等於或不等於某個值的元素。 – akd

回答

1

您已經可以表達在C#是沒有條件條件運算符:

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

是一樣的:

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

無論是更具可讀性是懸而未決的問題。您可以考慮使用具有良好名稱的幫助方法。

+0

我很抱歉。我剛剛編輯了這個問題。 – akd