많은 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 행 정도가 들리지는 않습니다. –