2014-10-03 113 views
1

我需要开发简单的Windows桌面应用程序,它将在单表MDF中加载CSV文件,从中生成一些报告,然后删除数据。 CSV文件可能包含数百万条记录...Linq的等待操作超时异常

当我尝试执行代码以显示dbGridView中的数据时,引发异常“等待操作超时”。

db dbEntities = new db(); 

    var ds = (from tbl in db.tbl_csv 
       orderby f1 
       select new 
       { 
        f1= tbl.f1, 
        f2 = tbl.f2, 
        f3= tbl.f3, 
        f4= tbl.f4, 
        f5= tbl.f5, 
        f6= tbl.f6, 
        f7= tbl.f7, 
        f8= tbl.f8 
       } 
       ); 
    var bds = ds.ToList(); 
    return Helpers.ToDataSet(bds); 

这工作如果CSV包含的数据量小,但是当它已经超过70-80k记录,则抛出异常......

有没有办法解决这个?

+1

不一次读取数百万条记录的数据。 – Servy 2014-10-03 19:25:11

回答

2

阅读n一次记录的数量。例如

int totalRecords = ds.Count(); 
int n = 100; 
int chunksRead = 0; 
int recordsRead = 0; 

while(recordsRead < totalRecords) 
{ 
    ds.Skip(recordsRead).Take(n); 
    // process n records 
    ... 
    chunksRead++; 
    recordsRead = chunksRead * n; 
}