具有三元运算符和可空类型的Xelement构造函数

时间:2012-07-17 13:28:20

标签: linq-to-xml nullable ternary-operator

我正在尝试使用linq to xml功能构造从一堆对象创建xml:

new XAttribute("duration", (m.Media.Type.HasValue && m.Media.Type.Value == MediaType.Image) ? m.DurationInSeconds : default(int?)),

代码的问题是,如果媒体类型没有值或媒体类型不是图像,我会得到一个异常,这可能是因为我使用了default(int?)。

理想情况下,如果媒体类型不存在或媒体不是图像,我想在节点中替换“null”。但无法弄清楚如何。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

是否要将字符串“null”作为属性值?

如果是,我会使用以下代码:

    int? typeID = null;
    int duration = 23;
    var xml = new XElement("root", 
        new XAttribute("duration", ((typeID.HasValue && typeID.Value == 1) ? duration.ToString() : null) ?? "null")
    );

如果typeID == 1

,则结果为<root duration="null" /><root duration="23" />