我使用LINQ to XML和XDocument
解析XML文档。有没有办法让XElement
/ XContainer
通过索引获取子节点(按文档顺序)?这样我就可以获得元素的n
节点了吗?
我知道我可以通过获取该元素的所有子节点并将IEnumerable
转换为List
来实现这一点,但这听起来似乎会增加高度冗余的开销(因为我我只对单个子节点感兴趣。
文档中是否遗漏了一些内容?
答案 0 :(得分:5)
不,使用XElement
或XContainer
没有对子元素的索引访问权限。如果您想要建立索引,则有两种选择。
首先是在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个元素。
如果您的列表很大并且您没有包含最后一个元素,这可能会有所帮助。