我有以下对象结构,从XML(WS)中解析:
<ns2:Category>
<ns2:CategoryId>800003</ns2:CategoryId>
<ns2:CategoryName>Name1</ns2:CategoryName>
<ns2:Categories>
<ns2:Category>
<ns2:CategoryId>800008</ns2:CategoryId>
<ns2:CategoryName>Name2</ns2:CategoryName>
<ns2:Categories>
<ns2:Category>
<ns2:CategoryId>800018</ns2:CategoryId>
<ns2:CategoryName>Name3</ns2:CategoryName>
<ns2:Categories/>
</ns2:Category>
<ns2:Category>
<ns2:CategoryId>800028</ns2:CategoryId>
<ns2:CategoryName>Name4</ns2:CategoryName>
<ns2:Categories/>
</ns2:Category>
</ns2:Categories>
</ns2:Category>
<ns2:Category>
<ns2:CategoryId>800009</ns2:CategoryId>
<ns2:CategoryName>Name5</ns2:CategoryName>
<ns2:Categories>
<ns2:Category>
<ns2:CategoryId>800019</ns2:CategoryId>
<ns2:CategoryName>Name6</ns2:CategoryName>
<ns2:Categories>
<ns2:Category>
<ns2:CategoryId>800119</ns2:CategoryId>
<ns2:CategoryName>Name7</ns2:CategoryName>
<ns2:Categories/>
</ns2:Category>
<ns2:Category>
<ns2:CategoryId>800219</ns2:CategoryId>
<ns2:CategoryName>Name111</ns2:CategoryName>
<ns2:Categories/>
</ns2:Category>
</ns2:Categories>
</ns2:Category>
</ns2:Categories>
</ns2:Category>
</ns2:Categories>
</ns2:Category>
如何有效地找到CategoryId 800119的Category对象?所以,我正在寻找像FindCategory(long categoryId)这样的东西 - 可以使用LINQ to objects。 还有其他选择吗?
答案 0 :(得分:3)
我使用LINQ to XML:
XNamespace ns = "http://url-for-ns2";
XDocument doc = XDocument.Load("file.xml");
string requiredId = "800119";
var categoryId = doc.Desendants(ns + "CategoryId")
.Where(x => x.Value == requiredId)
.FirstOrDefault();
var category = categoryId == null ? null : categoryId.Parent;