2010-08-03 110 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());