【发布时间】:2016-06-08 19:44:01
【问题描述】:
我有一个 IEnumerable。我想把它分块,即说有 500 个元素,我想要 10 50 个元素块。我试过这个
while (true)
{
var page = ret.Take(pagesize).ToList();
.. do stuff with page
}
但每次都是从头开始。我对上述模型(每页上的外部循环)感到满意。或者看起来像这样的东西
ret.ChunkIt(pagesize).Select(chunk => >do stuff with the page)
我想避免使整个列表具体化的东西(它可能很大)。即做某事
List<List<object>> chunks = ret.Chunkit(100);
【问题讨论】:
-
Skip() 然后 Take()
-
这就是所谓的 schlemeil 画家算法
-
如果集合实现了 IList 则不是 O(1)