C# Linq到XML、yield和其他
我想知道是否有一个.NET库或第三方工具来执行实体框架,比如XML文档上的LINQ查询。我知道已经有LINQ to XML,它允许您对C# Linq到XML、yield和其他,c#,.net,linq,linq-to-xml,C#,.net,Linq,Linq To Xml,我想知道是否有一个.NET库或第三方工具来执行实体框架,比如XML文档上的LINQ查询。我知道已经有LINQ to XML,它允许您对XDocument对象执行查询,该对象已经加载到内存中了,但是如果XML文档的大小非常大(超过千兆字节),该怎么办 我希望可以选择将此查询交给XmlReader而不是XDocument对象。这可能是开箱即用吗?我不相信您会有一个适合所有XML文档的解决方案,但您可以做到 我将创建一个类,该类实现并接受您想要流式传输的 然后,我将创建类型,该类型将用于实现IEnum
XDocument
对象执行查询,该对象已经加载到内存中了,但是如果XML文档的大小非常大(超过千兆字节),该怎么办
我希望可以选择将此查询交给
XmlReader
而不是XDocument
对象。这可能是开箱即用吗?我不相信您会有一个适合所有XML文档的解决方案,但您可以做到
我将创建一个类,该类实现并接受您想要流式传输的
然后,我将创建类型,该类型将用于实现IEnumerable
中的类型参数T
一旦有了这些,在的实现中,您将调用XmlReader
上的各种Move*
和Read*
方法,这将允许您构造T
的单个实例
当您手头有一个T
实例时,您将使用yield return
来生成项目。GetEnumerator
主体的其余部分将在流经XmlReader
时适当循环
有了它,您就可以在获得T
的实例时对其进行流式处理,而不必首先将整个文档加载到内存中
当然,您必须测试一次要阅读多少文档。看一看 好的,在搜索了一点之后,我遇到了这样一个线程:这个:我一直在考虑使用几乎完全相同的技术来解决这个问题,但是它仍然缺乏充分的支持和更好的性能。这正是我想要的,我也喜欢它的编码方式!谢谢谢谢,我发现了一些使用上述技术的类似解决方案,但我喜欢jdv发布的第三方工具。