如何有条件地将新的XElement添加到wpf中的现有根元素中?

时间:2014-07-16 08:16:13

标签: c# wpf

我通过这种方式创建了XElement

private void Analyze( IEnumerable<XElement> inputData)
{

    XElement rootElement = new XElement("Items",
    from singleInputItem in inputData
    select new XElement("Element",
         new XAttribute("ID", "default ID"),
         new XAttribute("Type", "default type"),
         new XElement("Width", 120),
         new XElement("Height",150)
         ));
}

我还创建了一个这样的简单函数:

private int contentNumber = 0;

private void getContent()
{
    return contentNumber++;
}

private bool status = false;
//some function to change status here

现在,当XElementrootElement时,我想在Element内的status中添加新true,所以我想做类似的事情:< / p>

private void Analyze( IEnumerable<XElement> inputData)
{

    XElement rootElement = new XElement("Items",
    from singleInputItem in inputData
    select new XElement("Element",
         new XAttribute("ID", "default ID"),
         new XAttribute("Type", "default type"),

         if( status == true )
         {
             new XElement("Content", getContent());
         }

         new XElement("Width", 120),
         new XElement("Height",150)
         ));
}

显然,上述if部分不正确。但我找不到任何解决办法在互联网上做同样的事情。有人可以帮忙吗?谢谢。

2 个答案:

答案 0 :(得分:8)

您可以使用所谓的ternary operator

condition ? 'value if true' : 'value if false';

或者,在您的情况下:

...
    new XAttribute("Type", "default type"),
    status ? new XElement("Content", getContent()) : null,
    new XElement("Width", 120),
...

答案 1 :(得分:1)

wit是正确的。但是如果你不想在状态为false的情况下根本不包括状态字段,那么你必须按条件有条件地初始化rootElement

private void Analyze( IEnumerable<XElement> inputData)
    {
        XElement rootElement = null;
        if(status)
        {
          rootElement = new XElement("Items",
          from singleInputItem in inputData
          select new XElement("Element",
               new XAttribute("ID", "default ID"),
               new XAttribute("Type", "default type"),
               new XElement("Content", getContent());     
               new XElement("Width", 120),
               new XElement("Height",150)
             ));
        }
        else
        {
          rootElement = new XElement("Items",
          from singleInputItem in inputData
          select new XElement("Element",
               new XAttribute("ID", "default ID"),
               new XAttribute("Type", "default type"),     
               new XElement("Width", 120),
               new XElement("Height",150)
             ));
        }
    }