Linq to XML - 仅在某些事情上创建Xelement

gre*_*ter 2 xml linq linq-to-xml

我是linq to xml的新手并尝试执行以下操作.我正在从我收到的一些对象创建一个新的xml.

我有一个名为"Scale"的XElement有一个Bool值"DynamicScale",如果它是False,我需要创建两个XElements作为后代Scale,如果是True,我不需要这些元素.

  <Scale DynamicScale="False">
    <LowScale>0</LowScale>
    <HighScale>10000</HighScale>
  </Scale>
Run Code Online (Sandbox Code Playgroud)

有没有办法If在创建它的过程中添加一个语句?或者任何其他建议来处理这种需求?如果我想做的话(我知道不可能这样).欢迎任何简单的方式.

new XElement("Scale",
    new XAttribute("DynamicScale", c.DynamicScale),
    if (c.DynamicScale == false)
    {
        new XElement("LowScale", c.LowScale),
        new XElement("HighScale", c.HighScale),
    })
Run Code Online (Sandbox Code Playgroud)

Rap*_*aus 5

使用三元运算符

new XElement(
    "Scale",
    new XAttribute("DynamicScale", c.DynamicScale), 
    c.DynamicScale ? 
        null: 
        new[]
        { 
            new XElement("HighScale", c.HighScale),
            new XElement("LowScale", c.LowScale)
        }
);
Run Code Online (Sandbox Code Playgroud)