【发布时间】:2014-02-19 13:41:19
【问题描述】:
我对@987654322@ 和Take() 与IEnumerable<> 一起使用时的效率有疑问。
我使用IEnumerable<> 返回我的所有数据列表,并且我使用“yield return”来防止我必须分配大量内存来传回数据。这非常有效。
但是,在我的流程后期,我想批量处理这些数据,并一次从我的列表中提取 20 个条目。我心想..啊!这非常适合枚举器。
我在IEnumerable interface 上发现了非常有用的Skip() 和Take() 方法,但是我现在意识到这会导致我的循环每次从头开始重新交互。
从IEnumerable 分页数据的最佳方式是什么?我最好在枚举器上使用MoveFirst() 和MoveNext() 而不是Skip() 和Take()?
我已经做了一些谷歌搜索,但找不到答案..
有人可以帮忙吗?
我真的很喜欢 IEnumerable<> 上的 LINQ 功能,但是我真的必须考虑效率。
【问题讨论】:
-
查看“更多 Linq”,特别是
Batchmethod。 -
有很多方法可以实现分页。最佳答案很大程度上取决于您的环境和背景。
标签: c# performance linq enumerable