C# 数据集写入文件

C# 数据集写入文件,c#,.net,dataset,filestream,C#,.net,Dataset,Filestream,我有一个数据集,有600K条记录当我尝试将这些数据写入XML文件时,我总是得到OutOfMemoryException。 下面是我目前写数据的方式。 执行此操作的内存效率最高的方法是什么 using (MemoryStream output = new MemoryStream()) { WorkingDataset.WriteXml(output, XmlWriteMode.WriteSchema); using (FileStream outputFile = File.Cr

我有一个
数据集
,有
600K条记录

当我尝试将这些数据写入
XML
文件时,我总是得到
OutOfMemoryException

下面是我目前写数据的方式。

执行此操作的内存效率最高的方法是什么

using (MemoryStream output = new MemoryStream())
{
    WorkingDataset.WriteXml(output, XmlWriteMode.WriteSchema);
    using (FileStream outputFile = File.Create(FilePath))
    {
         using (GZipStream compressedStream = new GZipStream(outputFile, CompressionMode.Compress))
         {
        compressedStream.Write(output.GetBuffer(), 0, (int)output.Length);
         }
        }
  }

为什么要使用
内存流
?只需将其直接写入磁盘:

using (var fileStream = File.Create(FilePath))
{
    using (var zipStream = new GZipStream(outputFile, CompressionMode.Compress))
    {
        WorkingDataset.WriteXml(zipStream, XmlWriteMode.WriteSchema);
    }
}

内存流这么糟糕吗?如果我有一个数据库层和另一个负责保存文件的业务逻辑层,没有MemoryStream我怎么能做到呢?@GustavoCardoso:如果你有理由使用一个,并且你不介意一次将整个文件存储在内存中,那就好了。但是OP专门寻找一种内存高效的方法,不需要
内存流。上下文很重要,这是真的。他得到了一个关于记忆的例外。你应该注意如何使用MemoryStream。不管怎样,谢谢你,乔恩。