試圖用這樣的查詢:獲取的LINQ查詢返回空值,如果兩個變量不相等
var checkName = from nn in xdoc.Root.Elements("string")
where nn.Attribute("id").Value.Equals(newTag)
select thisbool = true;
要看看,在我的XML,存在一個節點string
其中屬性值id
等號這個字符串變量newTag
。如果不存在這樣的string
節點,我想返回null或東西,我可以檢查直接使用下面的if語句,這樣我可能會禁止特定的變化進行,即
if (thisbool)
{
MessageBox.Show("The string ID you entered is already in use. Please enter a different string ID.");
tagBox.Text = undoTag;
return;
}
這是我目前的設置。我也嘗試只選擇nn
和使用if(nn != null)
,但似乎沒有任何工作。我很抱歉,如果這是一個新問題 - 我正在進入一點時間緊縮,我確實試圖找到一個答案,並測試了45分鐘-1小時的事情。
沒有需要'Where'的頂部,'Any'具有過載,需要一個謂語。 –
@Yuriy我知道;實際上我發現它使用'Where()'方法更具可讀性,因爲它用語言陳述了Any()'過載實際上在做什麼。性能影響非常小,因爲實際元素的產生和測試是相同的。事實上,我更喜歡我的第一個建議,因爲現在很清楚我的順序是「符合某些條件的元素」,而且我的條件是「是否存在這樣的元素?」 – dlev
我可以看到,我個人更喜歡'myEnumerable.Any(e匹配這個)'的措辭。 –