Не удалось записать большой объем данных в поток

Когда я пытаюсь записать очень большой объем данных (список с 300 000 строк и более) в поток памяти, используяCsvHelperэто исключение"System.IO.IOException: поток был слишком длинным.".

Класс данных довольно большой и имеет ~ 30 свойств, следовательно, каждая запись в файле будет иметь ~ 30 столбцов.

Это фактический код написания, где генерируется исключение (кстати, этот код основан натот ответ автора CsvHelper lib):

using (var memoryStream = new MemoryStream())
{
    using (var streamWriter = new StreamWriter(memoryStream, encoding ?? Encoding.ASCII))
    {
        var csvWriter = new CsvWriter(streamWriter, GetConfiguration(delimiter, mappingClassType, mappingActions));
        csvWriter.WriteRecords(data); //data is IEnumerable<T> and has more than 300k records

        streamWriter.Flush();
        return memoryStream.ToArray();
    }
}

Затем я сохраняю полученный массив байтов в файл.

File.WriteAllBytes(filePath, resultedBytesArray); 

Обратите внимание, чтотот же код работает хорошо, когда я пишу 100 000 записей в файл (в этом случае файл имеет размер около 1 ГБ). Кстати, моя цель - записать более 600 000 записей данных.

Это релевантная часть трассировки стека, связанная с этой проблемой.

Stream was too long.|System.IO.IOException: Stream was too long.
at System.IO.MemoryStream.Write(Byte[] buffer, Int32 offset, Int32 count) 
at System.IO.StreamWriter.Flush(Boolean flushStream, Boolean flushEncoder) 
at System.IO.StreamWriter.Write(Char[] buffer, Int32 index, Int32 count) 
at CsvHelper.CsvWriter.NextRecord() in C:\Users\Josh\Projects\CsvHelper\src\CsvHelper\CsvWriter.cs:line 290 
at CsvHelper.CsvWriter.WriteRecords(IEnumerable records) in C:\Users\Josh\Projects\CsvHelper\src\CsvHelper\CsvWriter.cs,:line 490 
at FileExport.Csv.CsvDocument.Create[T](IEnumerable`1 data, String delimiter, Encoding encoding, Type mappingClassType, IDictionary`2 mappingActions) in d:\Dev\DrugDevExport\FileExport\Csv\CsvDocument.cs:line 33 

Что касается меня, то основной способ достичь своей цели и избежать этой проблемы состоит в том, чтобы разбить мой список записанных данных на несколько частей и объединить их вместе, но, возможно, есть какое-то довольно очевидное и простое решение без существенного рефакторинг кода (например, увеличение размера потока / буфера по умолчанию и т. д.)?

Также имейте в виду, что я также применил два возможных решения, чтобы предотвратить исключение объектов «Недостаточно памяти».

избавился от ограничения 2ГБ для объектов (отсюдаhttps://stackoverflow.com/a/20912869) Да, я работаю на 64-разрядной ОС с 32 ГБ ОЗУ.установить x64 "Platform target" в разделе настроек сборки (отсюдаhttps://stackoverflow.com/a/22592876)

Заранее спасибо.

Ответы на вопрос(2)

Ваш ответ на вопрос