我有以下 XML 结构:
<Capabilities>
<Capability ID="1" Name="Capability # 1">
<Relations>
<Relation RelatedTo="2" RelationType="Child"/>
<Relation RelatedTo="3" RelationType="Child"/>
<Relation RelatedTo="4" RelationType="Child"/>
<Relation RelatedTo="5" RelationType="Child"/>
</Relations>
</Capability>
<Capability ID="3" Name="Capability # 3">
<Relations>
<Relation RelatedTo="1" RelationType="Dependant" />
</Relations>
</Capability>
<Capability ID="2" Name="Capability # 2">
<Relations>
<Relation RelatedTo="6" RelationType="Child" />
<Relation RelatedTo="5" RelationType="Child" />
</Relations>
</Capability>
</Capabilities>
我需要查询所有具有 Child 关系且相关属性值为 5 的功能。 到目前为止,我已尝试使用以下查询,但我得到了“空引用异常”的集合,并且我不知道如何执行此操作。
var result = root.Elements("Capability")
.Where(c => c.Elements("Relations")
.Where(r => r.Attribute("RelatedTo").Value == "5"
&& r.Attribute("").Value == Enum.GetName(typeof(RelationTypes), RelationTypes.Children)).Any());
关于我做错了什么或者查询它的正确方法有什么线索吗?
最佳答案
var capabilites = root.Descendants("Capability")
.Where(c => c.Descendants("Relation")
.Any(r => (string)r.Attribute("RelatedTo") == "5"))
.ToList();
关于c# - Linq 到 XML : Get all nodes that contain certain children,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12378547/