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

推荐答案

Elements只查找direct个后代的元素,即直系子代.

Descendants查找任何级别的 children ,即 children 、孙子女等...


下面是一个例子来说明这种差异:

<?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,你将获得更好的性能.

.net相关问答推荐

.NET Core 中的微服务

System.IO.Directory.Exists 在 LINQ 语句中失败,但在 foreach 循环中没有

使用 Task.WhenAll 但需要跟踪每个单独的 Task 的成功

如何计算给定2个字符串的距离相似性度量?

.gitignore 和 Visual Studio 项目:忽略 bin/Debug 目录但不忽略 bin/Release 目录

根源是什么?

使用字典作为数据源绑定组合框

在 web api 控制器(.net 核心)中使用 async/await 或任务

OpenCV的.Net(dotNet)包装器?

寻找 .NET 的命令行参数解析器

有没有办法从方法返回匿名类型?

仅使用 XAML 绘制纯色三角形

.NET Framework SDK 和 Targeting 包有什么区别

无法加载文件或程序集Antlr3.Runtime (1)或其依赖项之一

将 Dictionary 转换为匿名对象?

DataContractSerializer vs XmlSerializer:每个序列化器的优缺点

如何在 C# 中使用迭代器反向读取文本文件

我可以将构造函数参数传递给 Unity 的 Resolve() 方法吗?

如何判断枚举是否包含数字?

泛型类的静态成员是否与特定实例相关联?