簡體   English   中英

如何將大數據寫入文件C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM