簡體   English   中英

Linq to XML if / foreach with XElement

[英]Linq to XML if/foreach with XElement

似乎我對Linq to XML有點麻煩,我一直在尋找教程,但是關於select語句並沒有真正告訴我。 我想知道如何使用linq進行foreach / if語句,如果您有教程,請告訴我。 我現在的問題是,如果文本框中包含某些內容,我只希望將其放入XML中。

該代碼顯然無法正常工作,因為無法將if語句與我的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)),
                            }

您是否只是在Text值不為空時嘗試構造新的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));
}

為什么不使用始終存在的部分創建XDocument,然后在之后可以使用常規的for或if插入/追加其他部分

  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());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM