【发布时间】:2015-02-23 17:13:33
【问题描述】:
问题:我有数百万行来自数据库要处理。
我需要实现一个方法,该方法将返回数据库行的“流”(?)。 我不想一次将它们全部加载到内存中。
我正在考虑返回一个懒惰的IEnumerable<Record> 并使用yield。
该方法将使用SqlDataReader 处理加载连续记录。
但是当客户在我的IEnumerable 上调用.Count() 时会发生什么?计算所有记录意味着需要全部获取。
有没有什么好的现代方法可以返回一个不将所有对象都存储在内存中的对象流,只需一个一个地处理?我的方法应该返回一个记录流。
反应式扩展似乎可以为我解决问题,但我从未使用过。
有什么想法吗?
谢谢
【问题讨论】:
标签: c# .net lazy-loading lazy-evaluation sqldatareader