Как записать большие данные в файл 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();