c# - 内存记录过多的 LINQ to SQL

标签 c# .net linq-to-sql

我一直在做的很多 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/

相关文章:

c# - 使用 Microsoft DI 在泛型构造函数中注入(inject)基本类型

c# - 如何在编辑后将图片框控件另存为 jpeg 文件

asp.net - Azure appfabric 缓存、从 Linq 到 SQL 的匿名类的序列化问题

linq - Linq-to-Sql 中是否缺少任何主要功能?

.net - 如何在Linq to SQL中实现缓存?

c# - 用 TryParse() 和 out 变量短路可靠吗?

c# - 需要c#代码获取域名

.net - 自动浏览器测试 : How to test JavaScript in web pages?

c# - System.Net.Http 的两个版本

c# - 如何在异常发生之前检测到导致异常的条件?