小编典典

Linq to XMLDescendants and Elements有什么区别

all

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


阅读 86

收藏
2022-07-12

共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);
}

结果:

Elements : Test 1
Elements : Test 3
Descendants : Test 1
Descendants : Test 2
Descendants : Test 3

如果你知道你想要的元素是直接子元素,那么如果你使用Elements而不是Descendants.

2022-07-12