0
我正在查詢IEnumerable以便根據下層元素中的屬性對其進行過濾。我不知道元素名稱,但知道要查詢的屬性。查詢包含未知元素的IEnumerable <XObject>
給出更多細節。
此SearchVars類將在表單上包含選定的搜索選項。它還包含ObjectType屬性,該屬性是XML對象在文件中的標識符。對於下面的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>
我會試圖尋找基於客戶端ID的和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;
}
我希望我在嘗試是明確的,期待今天有些學習。 謝謝