XDocument:有条件地创建新的XElement

13

我的问题与有条件地创建XElements相关,也就是说,如果满足某些条件,则创建XElement,否则跳过创建XElement?目前,我可以创建空的XElements,然后通过检查IsEmpty是否为true来删除所有空元素,但这种方法并不正确...

我感觉需要一个简单的示例:

XDocument doc = new XDocument(new XDeclaration("1.0","utf-8","yes"),
new XElement("Books",
    new XElement("Book", new XElement("Title", "Essential LINQ"), new XElement("Author", "Charlie Calvert,Dinesh Kulkarni")),
    new XElement("Book", new XElement("Title", "C# in Depth"), new XElement("Author", "Jon Skeet")),
    new XElement("Book", new XElement("Title", "Some Title"), new XElement("Author", ""))
    ));

假设"Author"元素是一个可选元素,如果我们不知道作者,那么在XML中就不需要加入该元素。简单而丑陋的解决办法是创建一个空元素,并在之后删除它。

有人知道如何制定更优雅的解决方案吗?例如:

condition_met ? new XElement("Author",variable_with_value) : do not create element

祝一切顺利,如有需要请随时咨询获取更多信息。

1个回答

34

利用空值在构造中被跳过的事实:

condition_met ? new XElement("Author", variable_with_value) : null

(LINQ to XML充满了类似这样的巧妙设计决策,使得使用它变得很愉悦。)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接