Большая часть LINQ to SQL, которую я делал, включает чтение данных из таблицы, а затем вызов метода расширения ToList () и использование данных в памяти. Однако теперь я хочу использовать LINQ to SQL для обработки большего количества записей, которые могут поместиться в памяти. Это шаблон, который я придумал до сих пор:
int skip = 0;
IList<Record> records = new List<Record>();
do
{
records = DBRecords.Skip(skip).Take(1000).Select(a => new Record
{
// Set values here...
}).ToList();
foreach (Record r in records)
{
yield return r;
}
skip += 1000;
} while (records.Count > 0);
Это позволяет мне извлекать 1000 записей за раз и возвращать их партиями в приложение. Тем не менее, я знаю, что должен быть лучший способ сделать это?