小编典典

Linq to XML后代和元素之间有什么区别

c#

我在VS IntelliSense中遇到了这两个关键字。我试图搜索它们之间的差异,但没有得到明确的答案。在中小型XML文件中,哪一个具有最佳性能。谢谢


阅读 279

收藏
2020-05-19

共1个答案

小编典典

Elements仅查找那些
直接 后代的元素,即直系子代。

Descendants
查找任何级别的孩子,例如,孩子,孙子等等。


这是一个展示差异的示例:

<?xml version="1.0" encoding="utf-8" ?>
<foo>
    <bar>Test 1</bar>
    <baz>
        <bar>Test 2</bar>
    </baz>
    <bar>Test 3</bar>
</foo>

码:

XDocument doc = XDocument.Load("input.xml");
XElement root = doc.Root;

foreach (XElement e in root.Elements("bar"))
{
    Console.WriteLine("Elements : " + e.Value);
}

foreach (XElement e in root.Descendants("bar"))
{
    Console.WriteLine("Descendants : " + e.Value);
}

结果:

元素:测试1
元素:测试3
后裔:测试1
后裔:测试2
后裔:测试3

如果您知道所需的元素是直接子元素,那么如果使用Elements而不是,则会获得更好的性能Descendants

2020-05-19