大規模なデータセット (140 万レコード) を SQL Server から取得し、WinForms アプリケーションのファイルにダンプしようとしています。一度に大量のメモリを保持しないように、ページングを使用して実行しようとしましたが、プロセスは実行中にメモリ フットプリントを拡大し続けます。約 25% で、600,000K を占めていました。ページングが間違っていますか?メモリ使用量がそれほど増加しないようにする方法について、いくつかの提案を得ることができますか?
var query = (from organizations in ctxObj.Organizations
where organizations.org_type_cd == 1
orderby organizations.org_ID
select organizations);
int recordCount = query.Count();
int skipTo = 0;
int take = 1000;
if (recordCount > 0)
{
while (skipTo < recordCount)
{
if (skipTo + take > recordCount)
take = recordCount - skipTo;
foreach (Organization o in query.Skip(skipTo).Take(take))
{
writeRecord(o);
}
skipTo += take;
}
}