2012-06-13 86 views
2

只是一個快速檢查真的。Linq到XML搜索

我有一個XML文件,我將使用Linq來搜索XML。我唯一的問題是,我的用戶將提供的XML可以使用長代碼標籤或短代碼標籤,例如

<FromPerson>Joe Bloggs</FromPerson> - 隆典

OR

<m175>Joe Bloggs</m175> - 短代碼

這裏是我的代碼片段展示瞭如何我目前正在搜索的文檔(目前只使用長碼搜索):

prod.ProductID = product.Elements("ProductIdentifier").First(t => (t.Element("ProductIDType").Value == "45" || t.Element("ProductIDType").Value == "21")).Element("IDValue").Value; 

因此,元素'ProductIdentifier'可以是'b221'或'b221'。

只是簡單地將IF語句用於評估XML標記是長代碼還是短代碼,然後獲取值OR是否存在更快速,更高效的方法?

+0

有寫,如果條件只在我看來沒有備用它 – Deepesh

+0

@Deepesh是啊,我想 一樣。我只是想檢查一下沒有更好的方法來做到這一點。 – 109221793

+0

當一個人短,或者他們可以混合在同一個xml中時,所有的標籤都是短的嗎?如果他們不能混合使用,那麼ShortTags字典和longTags字典(shortTag是關鍵)如何呢?您檢查xml中是否使用了longTags或shortTags,選擇了良好的Dic,代碼可以像'product.Elements(selectedDictionary [「b221」])' –

回答

1

如果你不關心順序你可以查詢都和連接的結果是這樣的:

var results = document.Descendants("ProductIdentifier") 
         .Union(document.Descendants("b221")); 

編輯

如果你關心元素的順序你可以使用下面的查詢:

var results = document.Descendants() 
         .Where(e => e.Name == "ProductIdentifier" || e.Name == "b221"); 
+0

其他elemetns怎麼樣..... –