[英]How to write large data into file c#
我必須在csv文件中寫入大數據(12L)記錄。我正在使用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());
}
}
從數據庫int獲取所有結果僅需要100毫秒,但是對於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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.