对XElement子节点的索引访问

时间:2011-03-24 12:30:37

标签: c# xml linq linq-to-xml xelement

我使用LINQ to XML和XDocument解析XML文档。有没有办法让XElement / XContainer通过索引获取子节点(按文档顺序)?这样我就可以获得元素的n节点了吗?

我知道我可以通过获取该元素的所有子节点并将IEnumerable转换为List来实现这一点,但这听起来似乎会增加高度冗余的开销(因为我我只对单个子节点感兴趣。

文档中是否遗漏了一些内容?

3 个答案:

答案 0 :(得分:5)

不,使用XElementXContainer没有对子元素的索引访问权限。如果您想要建立索引,则有两种选择。

首先是在XContainer上调用Elements方法(按文档顺序返回IEnumerable<T>XElement个实例),然后使用Skip extension method跳过元素以达到特定的孩子。

如果您想要通过索引访问子元素,那么您应该将它们放在IList<T>(具有索引访问权限)中,这对于ToList extension method很容易:

IList<XElement> indexedElements = element.Elements().ToList();

答案 1 :(得分:4)

Skip(n)。采取(1)运算符

答案 2 :(得分:2)

也许Take(topN)LINQ指令可以帮忙吗? 我正在根据一些与SQL相关的经验做出假设 - 你不能直接获得行,但可以采用前n个元素。

如果您的列表很大并且您没有包含最后一个元素,这可能会有所帮助。