我必须在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分钟。
答案 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();