C# 如何有条件地将新的XElement添加到wpf中现有的根元素中?
我通过以下方式创建了一个C# 如何有条件地将新的XElement添加到wpf中现有的根元素中?,c#,wpf,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"
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
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)
));
}
private void Analyze(IEnumerable inputData)
{
XElement根元素=新XElement(“项目”,
从inputData中的singleInputItem
选择新元素(“元素”,
新XAttribute(“ID”、“默认ID”),
新XAttribute(“类型”、“默认类型”),
如果(状态==真)
{
新的XElement(“Content”,getContent());
}
新像素(“宽度”,120),
新XElement(“高度”,150)
));
}
显然,上面的
if
部分不正确。但我在互联网上找不到任何解决办法来做同样的事情。有人能帮忙吗?谢谢 您可以为此使用所谓的三元运算符
:
condition ? 'value if true' : 'value if false';
或者,在您的情况下:
...
new XAttribute("Type", "default type"),
status ? new XElement("Content", getContent()) : null,
new XElement("Width", 120),
...
这是正确的。但如果status为false,您根本不想包含status字段,则必须有条件地初始化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)
));
}
}
private void Analyze(IEnumerable inputData)
{
XElement rootElement=null;
如果(状态)
{
rootElement=new-XElement(“项目”,
从inputData中的singleInputItem
选择新元素(“元素”,
新XAttribute(“ID”、“默认ID”),
新XAttribute(“类型”、“默认类型”),
新的XElement(“Content”,getContent());
新像素(“宽度”,120),
新XElement(“高度”,150)
));
}
其他的
{
rootElement=new-XElement(“项目”,
从inputData中的singleInputItem
选择新元素(“元素”,
新XAttribute(“ID”、“默认ID”),
新XAttribute(“类型”、“默认类型”),
新像素(“宽度”,120),
新XElement(“高度”,150)
));
}
}
非常感谢,我也试过这个,它成功了:)它成功了。但这是更高的维护和重复代码。IMHO首选三元空值与新像素。