似乎我在使用Linq to XML方面遇到了一些麻烦,我已经找了教程,但没有真正告诉我有关from,select,statements的内容。我想知道如何用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)),
}
答案 0 :(得分:2)
当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));
}
答案 1 :(得分:2)
为什么不创建包含始终存在的部分的XDocument,然后在其后插入/追加其他部分,您可以使用常规for或if
答案 2 :(得分:1)
总是包含所有这些节点并不是一个坏主意,即使它们是空的
如果你坚持,你可以写一个产生非空字段的枚举器方法:
//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());