C# 使用XElement将Linq转换为XML if/foreach

C# 使用XElement将Linq转换为XML if/foreach,c#,asp.net,linq,linq-to-xml,C#,Asp.net,Linq,Linq To Xml,似乎我在使用LINQtoXML时遇到了一些问题,我已经寻找了一些教程,但是没有任何关于from、select和语句的信息。我想知道如何用linq做foreach/if语句,如果你有教程,请告诉我。我现在的问题是,如果文本框中有内容,我只希望将某一部分放入XML中 代码显然不起作用,因为不能将if语句与我的XDocument放在一起。任何帮助/解释都会非常好 if(txtPr3_Chain.Text != "") {

似乎我在使用LINQtoXML时遇到了一些问题,我已经寻找了一些教程,但是没有任何关于from、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)),
                            }

当文本值不为空时,您是否只是试图构造一个新的
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));
}

当文本值不为空时,您是否只是试图构造一个新的
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

为什么不使用始终存在的部分创建XDocument,然后在后面插入/附加其他部分,在这里您可以使用常规for或if

  • 始终包含所有这些节点不是一个坏主意,即使它们是空的

  • 如果您坚持,可以编写一个枚举器方法来生成非空字段:

  • //未经测试
    IEnumerable GetFields()
    {
    如果(txtPr3_City.Text!=null)
    收益率返回新项目(“城市”,txtPr3_City.Text);
    ....    
    }
    元素=新元素(“属性信息”,
    新XAttribute(“Chain”,txtPr3_Chain.Text),
    GetFields());
    
  • 始终包含所有这些节点不是一个坏主意,即使它们是空的

  • 如果您坚持,可以编写一个枚举器方法来生成非空字段:

  • //未经测试
    IEnumerable GetFields()
    {
    如果(txtPr3_City.Text!=null)
    收益率返回新项目(“城市”,txtPr3_City.Text);
    ....    
    }
    元素=新元素(“属性信息”,
    新XAttribute(“Chain”,txtPr3_Chain.Text),
    GetFields());
    
    您发布的代码毫无意义,并且您没有真正解释您想要做什么,也没有解释foreach/if语句的含义。您当然可以使用foreach遍历集合,然后使用if语句在循环中执行有条件的操作。不过,这与LINQ没有太大关系。下次我会尽量说得更清楚一些,尽管其他人似乎都理解了,因为每个答案都帮助了我。你发布的代码非常没有意义,你没有真正解释你想做什么,也没有解释foreach/if语句的含义。您当然可以使用foreach遍历集合,然后使用if语句在循环中执行有条件的操作。不过,这与LINQ没有太大关系。下次我会尽量说得更清楚一些,尽管其他人似乎都理解了,因为每个答案都帮助了我。谢谢这一点,不过对于未来,我将在Xdocument中做更多的foreach类型循环。。。如果你有任何教程,这将是伟大的,因为我似乎找不到任何好的感谢这是有效的,虽然在未来,我会做更多的foreach类型循环,在Xdocument。。。如果你有任何教程,这将是伟大的,因为我似乎找不到任何好的汉克斯,这与第一个答案的组合工作,谢谢!谢谢,这是第一个答案的组合,谢谢!