Тайм-аут операции ожидания ожидания с Linq

Мне нужно разработать простое приложение для рабочего стола Windows, которое будет загружать CSV-файл в MDF для одной таблицы, генерировать из него несколько отчетов и затем удалять данные. CSV-файл может содержать миллионы записей...

Когда я пытаюсь выполнить код для отображения данных в 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-80 тыс. Записей, возникает исключение...

Есть ли обходной путь для этого?

1 ответ

Решение

Читать 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;
}
Другие вопросы по тегам