<siteNode controller="a" action="b" title="">
<siteNode controller="aa" action="bb" title="" />
<siteNode controller="cc" action="dd" title="">
<siteNode controller="eee" action="fff" title="" />
<siteNode controller="eee1" action="fff1" title="" />
</siteNode>
</siteNode>
如何使用LINQ获取子节点的父节点?
例如,如果我给了controller="eee"
元素,我会回来的:
<siteNode controller="a" action="b" title="">
<siteNode controller="aa" action="bb" title="" />
<siteNode controller="cc" action="dd" title="">
我需要从上面的示例中获取所有父节点和祖父节点。
答案 0 :(得分:2)
你的意思是这样吗?
IEnumerable<XElement> GetParents(XElement element)
{
XElement cParent = element.Parent;
while (cParent != null)
{
yield return cParent;
cParent = cParent.Parent;
}
}
修改强>
正如杰夫在评论中指出的那样,你的例子实际上确实在你父母的一个父母身上有一个结束标记。行,因此不应该实际包括在内。如果你实际上是指那些落在给定记录之前的元素,&#34;与父母相比,您可以使用XNode.NodesBeforeSelf()
。