2012-07-17 33 views
0

我試圖使用LINQ到XML函數建設從一堆對象創建XML:的XElement構造與三元運算符和可空類型

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

與代碼的問題是,如果媒體類型沒有值或媒體類型不是圖像,我收到了一個異常,這可能是因爲我使用了default(int?)。

理想情況下,如果媒體類型不存在或媒體不是圖像,我想在節點中替換「null」。但無法弄清楚如何。

任何想法?

回答

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") 
    ); 

這導致<root duration="null" /><root duration="23" />如果TYPEID == 1