IEnumerable をクエリして、下位要素に保持されている属性に基づいてフィルター処理しようとしています。要素名はわかりませんが、クエリする属性は知っています。
詳細を説明します。
この SearchVars クラスには、フォームで選択された検索オプションが含まれます。また、ファイル内の XML オブジェクトの識別子である ObjectType のプロパティも含まれています。以下の XML の例では、オブジェクト タイプは T1 になります。
class SearchVars
{
public string ObjectType { get; set; }
public string ClientId { get; set; }
public string CustRef { get; set; }
}
XML 抽出の例
<root>
<T1>
<FT ClientID="PCL1" />
<T2 CustRef="Cust1">
<T3 Name="Site1">
<TER Error="123" ErrorText="Error 123" />
<TER Error="234" ErrorText="Error 234" />
<T4 SubErr="50420208">
<TSER ID="2199991741074" CHN="1">
<TER Error="567" ErrorText="Error 567" />
</TSER>
</T4>
</T3>
</T2>
</T1>
<T1>
<FT ClientID="PCL1" />
<T2 CustRef="Cust2">
<T3 Name="Site2">
<TER Error="123" ErrorText="Error 123" />
<TER Error="234" ErrorText="Error 234" />
</T3>
</T2>
</T1>
</root>
ClientID と CustRef に基づいてエラー属性を検索しようとしています。検索メソッドの最初のコードは、すべての T1 を列挙可能にプルすることです。2 つの空の IF は、LINQ クエリで検索変数のデータをフィルタリングする場所です。したがって、ClientID が PCL1 の場合、そのクライアント ID 属性値が存在する T1 をフィルタリングします。
public static IEnumerable<XObject> PerformSearch(string xmlData, Models.SearchVars vars)
{
XDocument document = XDocument.Parse(xmlData);
IEnumerable<XObject> result = document.Descendants(vars.ObjectType);
if (! string.IsNullOrEmpty(vars.ClientId))
{
}
if (!string.IsNullOrEmpty(vars.CustRef))
{
}
return result;
}
私が試みていることが明確になり、今日少し学ぶことを楽しみにしています. ありがとう