Как записать большие данные в файл C#

Я должен написать большие данные (12L) записей в CSV-файл. Я использую Streamwriter, чтобы записать в файл, но после примерно 6L записей, это дает мне ошибку вне памяти.

также я пишу этот файл на сервер напрямую, есть ли способ, чем загрузить его в браузер позже?

Это мой код: searchResult.Entities= это список EntityObject

using (StreamWriter fs = new StreamWriter
(new FileStream("Temp.csv", FileMode.Create)))
                    {
                        AddText(fs, headerString.ToString());
                        foreach (var org in searchResult.Entities.ToList())
                        {
                            StringBuilder sb = new StringBuilder();

                            appendText(sb, org.Id);
                            appendText(sb, org.LeadNo.HasValue ? org.LeadNo.Value.ToString() : "");


                            fs.WriteLine(sb.ToString());

                           foreach (var activity in org.Activities)
                           {
                              var activityString = new StringBuilder();
                             activityString.Append(" , , , , , , , , , , , , , , , , , ,");

                               appendText(activityString, org.Id);
                                appendText(activityString, org.LeadNo.HasValue ? org.LeadNo.Value.ToString() : "");

                            fs.WriteLine(activityString.ToString());

                           }

                        }

Получение всех результатов из базы данных в объекте занимает всего 100 мс, но запись в файл занимает около 1 минуты для записей 6L.

1 ответ

Вы можете попытаться не получить доступ ко всем свойствам

foreach (var org in searchResult.Entities.ToList()) //Change this

но только те, которые вам нужны:

var toItrate = searchResult.Entities.Select(s => new { Id = s.Id, LeadNo = (s.LeadNo.HasValue ? s.LeadNo.Value : String.Empty) }).ToList();
Другие вопросы по тегам