Многие из LINQ to SQL, которые я делал, включают чтение данных из таблицы, а затем вызов метода расширения ToList() и использование данных в памяти. Однако теперь я хочу использовать LINQ to SQL для обработки большего количества записей, которые могут вписываться в память. Это шаблон, который я придумал до сих пор: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 записей в то время, и вернуть их в пакетном режиме в приложении. Однако я знаю, что должен быть лучший способ сделать это?
Я не уверен, что есть особенно лучший способ, но поскольку есть затраты на каждую поездку в базу данных, возможно, вам следует анализировать, сколько записей вы берете за один раз. Поскольку вы не размещали то, что выглядели ваши ряды, я не могу сказать точно, но 1000 строк не кажутся достаточно, чтобы приблизиться к заполнению памяти машин. –