2010-08-03 243 views
0

Linq to XML看起來有點麻煩,我找了一些教程,但沒有真正告訴我關於select,statements的內容。我想知道如何做linq的foreach/if語句,如果你有一個教程,請讓我知道。我現在的問題是,如果文本框中有內容,我只想將某個部分放入我的XML中。Linq to XML if/foreach with XElement

該代碼顯然不工作,因爲你不能把我的XDocument語句。任何幫助/解釋將是非常巨大的

if(txtPr3_Chain.Text != "") 
          { 
         new XElement("Property_Info", 
          new XAttribute("Chain", txtPr3_Chain.Text), 
         new XElement("City" ,txtPr3_City.Text), 
         new XElement("AdRating" ,AdRating3.CurrentRating.ToString()), 
         new XElement("YourRating" ,YourRating3.CurrentRating.ToString()), 
         new XElement("Comment" ,txtPr3_Comments.Text)), 
          } 
+0

你已經發布的代碼是毫無意義的,你真的不解釋你想要做什麼,或者你通過一個foreach是什麼意思/ if語句。您當然可以使用foreach遍歷集合,然後使用if語句在循環中執行一些有條件的操作。雖然這與LINQ沒有多大關係。 – 2010-08-03 13:57:07

+0

我會盡量讓下一次更清楚,雖然其他人似乎都明白,因爲每個答案都幫助我。 – Spooks 2010-08-03 14:24:42

回答

2

爲什麼不說是永遠存在的部分創建的XDocument,然後插入/追加後的其他部分,在那裏你可以使用常規的或者

+1

謝謝,這與第一個答案的組合工作,謝謝! – Spooks 2010-08-03 14:02:16

2

你只是試圖建立一個新的XElement當文本值不爲空?

試試這個:

XElement element = null; 
if (txtPr3_Chain.Text != "") 
{ 
    element = new XElement("Property_Info", 
          new XAttribute("Chain", txtPr3_Chain.Text), 
          new XElement("City", txtPr3_City.Text), 
          new XElement("AdRating", AdRating3.CurrentRating.ToString()), 
          new XElement("YourRating", YourRating3.CurrentRating.ToString()), 
          new XElement("Comment", txtPr3_Comments.Text)); 
} 
+1

感謝這項工作,雖然對未來,我會做更多的foreach類型循環,在Xdocument ...如果你有任何教程將是偉大的,因爲我似乎無法找到任何好的 – Spooks 2010-08-03 14:01:54

1
  1. 這不是一個壞主意,總是包括所有這些節點,即使他們空

  2. 如果你堅持,你可以寫一個枚舉法是產生非空場:

 

//untested 
IEnumerable<Xelement> GetFields() 
{ 
    if (txtPr3_City.Text != null) 
     yield return new Xelement("City",txtPr3_City.Text); 
    ....  
} 


element = new XElement("Property_Info", 
       new XAttribute("Chain", txtPr3_Chain.Text), 
       GetFields());