我有这个XML代码,我想过滤掉特定机构中的人。
</persons>
<person>
<name>
<fn>Donald Duck</fn>
<n>
<family>Duck</family>
<given>Donald</given>
</n>
</name>
<email />
<tel teltype="voice" />
<tel teltype="mobile" />
<adr>
</adr>
<institutionrole roletype="Employee" />
<extension>
<institutions>
<institution institution="Division1">
</institution>
<institution institution="Division2">
</institution>
</institutions>
</extension>
</person>
</persons>
我要所有在部门Division2中的人。
有了此代码,我得到了所有员工,但并未按机构过滤。
var users = (from person in xmlDoc.Descendants("person")
where (person.Element("institutionrole").Attribute("roletype").Value.ToLower() == "employee"
答案 0 :(得分:0)
您可以使用以下类似内容基于嵌套元素进行过滤;这将过滤角色类型为“雇员”的人员,以及他们是否属于给定的机构。
var users = from person in xmlDoc.Descendants("person")
where person.Element("institutionrole").Attribute("roletype").Value.ToLower() == "employee"
&& person.Descendants("institutions").Elements("institution").Attributes("institution").Where(ins=>ins.Value.ToLower() == "division2").Any()
select person;