C# LINQtoXML是否在查询期间加载整个XML文档?

C# LINQtoXML是否在查询期间加载整个XML文档?,c#,xml,linq,C#,Xml,Linq,我有一个很大的xml文件,其中包含数据库 400mb是一个大小。 它是使用LINQ本身创建的,只需10分钟!好成绩 但要使用LINQ从xml文件中读取粒子信息,需要20分钟甚至更长时间 想象一下,阅读少量的信息比写大量的信息需要更多的时间! 在读取过程中,它需要调用一个函数XDocument.Load(@“C:\400mb.xml”),该函数不可IDisposable 因此,当它加载整个xml文档并获取我的小信息时,内存不会被清除 我的目标是阅读“ XDocument XD1 = XD

我有一个很大的
xml
文件,其中包含数据库
400mb
是一个大小。
它是使用
LINQ
本身创建的,只需
10分钟
!好成绩
但要使用
LINQ
xml
文件中读取粒子信息,需要20分钟甚至更长时间
想象一下,阅读少量的信息比写大量的信息需要更多的时间! 在读取过程中,它需要调用一个函数
XDocument.Load(@“C:\400mb.xml”)
,该函数不可
IDisposable

因此,当它加载整个xml文档并获取我的小信息时,内存不会被清除
我的目标是阅读“

     XDocument XD1 = XDocument.Load(@"C:\400mb.xml");
     string s1 = XD1.Root.Attribute("AnyAttribute").Value;
如您所见,我需要获取根元素的属性。
这意味着在
xml
文件中,我需要的数据可能位于第一行,查询必须非常快速!
但它不会加载整个文档,然后返回该信息!
因此,问题是如何使用任何东西从大型
xml
文件中读取少量信息?
System.Threading.Tasks
namespace有用吗?还是创建异步操作?
或者,任何一种处理xml文件的技术都像
二进制文件一样吗?

我不知道!请帮帮我!

Xdocument.Load
不是最好的方法,原因是Xdocument.Load将整个文件加载到内存中。根据MSDN
,内存使用量将与文件大小成比例。
您可以使用
XMLReader
(检查)如果您只是计划搜索XML文档,请阅读MSDN上的文档。

这就是流的定义,它不是重复的,而是相关的:
     XDocument XD1 = XDocument.Load(@"C:\400mb.xml");
     string s1 = XD1.Root.Attribute("AnyAttribute").Value;