我是linq to xml的新手,并尝试执行以下操作。 我正在从我收到的一些对象创建一个新的xml。
我有一个名为“Scale”的XElement
有一个Bool值“DynamicScale”,如果它是False
,我需要创建两个XElements
作为Scale
的后代,如果它是True
,我不要需要这些元素。
<Scale DynamicScale="False">
<LowScale>0</LowScale>
<HighScale>10000</HighScale>
</Scale>
有没有办法在创建这个语句的过程中添加If
语句?
或者任何其他建议来处理这种需求?
如果我想做的话(我知道不可能这样)。任何简单的方法都是受欢迎的。
new XElement("Scale",
new XAttribute("DynamicScale", c.DynamicScale),
if (c.DynamicScale == false)
{
new XElement("LowScale", c.LowScale),
new XElement("HighScale", c.HighScale),
})
答案 0 :(得分:5)
new XElement(
"Scale",
new XAttribute("DynamicScale", c.DynamicScale),
c.DynamicScale ?
null:
new[]
{
new XElement("HighScale", c.HighScale),
new XElement("LowScale", c.LowScale)
}
);
答案 1 :(得分:3)
new XElement("Scale",
new XAttribute("DynamicScale", c.DynamicScale),
c.DynamicScale ? null : new XElement("LowScale", c.LowScale),
c.DynamicScale ? null : new XElement("HighScale", c.HighScale));
对于非动态比例,这将产生
<Scale DynamicScale="False">
<LowScale>0</LowScale>
<HighScale>10000</HighScale>
</Scale>
用于动态比例
<Scale DynamicScale="True"/>
或更短的版本:
new XElement("Scale",
new XAttribute("DynamicScale", c.DynamicScale),
c.DynamicScale ? null : new XElement[] {
new XElement("LowScale", c.LowScale),
new XElement("HighScale", c.HighScale) }
);