2013-03-26 48 views
0

這裏是XML我處理:LINQ到發生的XML尋找元素如果以後元素存在

enter image description here

而且到目前爲止我的代碼:

XDocument doc = XDocument.Load(@"C:\Users\morganjo\Desktop\bb-tasks.xml"); 

     var q = from val in doc.Descendants("property") 
       select (string)val.Attribute("value"); 

     foreach (string str in q) 
     { 
      Console.WriteLine(str); 
     } 

這將讓我元素值中所有數字的值。我遇到的問題是這樣的,如果元素'name'等於'period'或'delay',我只需要值。由於這些發生在價值之後,我不知道如何解決這個問題。

回答

1

屬性順序無關緊要。你可以用它把它的價值和濾芯:

var q = from val in doc.Descendants("property") 
     where (string)val.Attribute("name") == "delay" || (string)val.Attribute("name") == "period" 
     select (string)val.Attribute("value"); 

或者用let關鍵字,以得到屬性值,然後用它兩次:

var q = from val in doc.Descendants("property") 
     let name = (string)val.Attribute("name") 
     where name == "delay" || value == "period" 
     select (string)val.Attribute("value"); 
+0

哇,多數民衆贊成真棒人,工程巨大。我還是LINQ的新手,這真的有幫助。將盡快接受。 – 2013-03-26 19:45:12