如何将大数据写入文件c#

时间:2016-10-17 11:10:45

标签: c# export-to-csv

我必须在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());

                           }

                        }

从数据库获取对象的所有结果只需要100毫秒,但是对于6L记录,在文件中写入大约需要1分钟。

1 个答案:

答案 0 :(得分:0)

您可能会尝试不访问所有属性

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();