我一直在做的很多 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 条记录并将它们分批返回到应用程序。但是,我知道一定有更好的方法吗?
最佳答案
linq 是惰性求值的,但 ToList() 将实现整个结果。您可能只需删除 ToList() 并直接返回查询结果。在 foreach block 中的调用者中处理结果将延迟执行。
关于c# - 内存记录过多的 LINQ to SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1918321/