我通过这种方式创建了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
现在,当XElement
为rootElement
时,我想在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
部分不正确。但我找不到任何解决办法在互联网上做同样的事情。有人可以帮忙吗?谢谢。
答案 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)
));
}
}