2

本当に簡単なチェック。

LinqtoXMLを使用して検索するXMLファイルがあります。私の唯一の問題は、ユーザーが提供するXMLは、ロングコードタグまたはショートコードタグのいずれかを使用できることです。

<FromPerson>Joe Bloggs</FromPerson>-長いコード

また

<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」のいずれかになります。

XMLタグが長いコードか短いコードかを評価するためにIFステートメントを配置し、値を取得するだけの場合ですか、それともこれを行うためのより迅速で効率的な方法はありますか?

4

1 に答える 1

1

順序を気にしない場合は、両方をクエリして、次のように結果を結合できます。

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

編集

要素の順序が気になる場合は、以下のクエリを使用できます。

var results = document.Descendants()
                      .Where(e => e.Name == "ProductIdentifier" || e.Name == "b221");
于 2012-06-13T11:19:36.070 に答える