2010-10-21 63 views
11

我的問題是關於有條件地創建XElements,也就是說,如果滿足某些條件,創建XElement,如果沒有,則跳過創建XElement?在這一點的時候,我可以創建空XElements,然後刪除所有空元素,通過檢查,如果爲IsEmpty是事實,但是,不知怎的,感覺不對......XDocument:有條件地創建新的XElement

我覺得,一個小例子可能是爲了:

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

試想一下,該「作者」 - 元素是一個可選的元素,如果我們不知道作者,我們根本不把該元素在XML - 簡單,和在我看來,醜陋的解決方案是將元素創建爲空元素,然後將其刪除。

任何人都知道如何使一個優雅的解決方案,所以說這樣的事情:

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

最好的問候,並隨時詢問進一步的信息,如果需要的話。

回答

27

使用的事實,零點在建設跳過:

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

(LINQ到XML是充滿整潔的小的設計決策,這樣使得它很高興一起工作)

+1

優秀的喬恩,謝謝 :) – 2010-10-21 19:20:24