我有以下xml结构:
<?xml version="1.0" encoding="utf-8" ?>
<administrators>
<administrator>
<fullname>full name1</fullname>
<email>email1@email.com</email>
<provinces>
<province>3</province>
<province>9</province>
</provinces>
</administrator>
<administrator>
<fullname>full name2</fullname>
<email>email2@email.com</email>
<provinces>
<province>1</province>
<province>2</province>
</provinces>
</administrator>
</administrators>
我希望能够返回具有特定省节点的管理员节点。我尝试过以下方法:
IEnumerable<Administrator> admins = RootElement.Elements("administrator")
.Where(x => x.Elements("provinces")
.Any(p => int.Parse(p.Element("province").Value) == provinceId))
.Select(x => new Administrator()
{
FullName = x.Element("fullname").Value,
Email = x.Element("email").Value
});
我的结果集是空的。
那我在这里错过了什么?如果provinceId = 3,如何选择省级元素等于provinceId的管理员元素?
答案 0 :(得分:3)
这是使用XPath的好例子:
RootElement.XPathSelectElements("//administrator[provinces/province = '" + provinceId + "']");
答案 1 :(得分:0)
答案 2 :(得分:0)
var admins = RootElement.Elements("administrator")
.Where( a => a.Descendants("province").Any( p => int.Parse(p.Value) == provinceId ) );