C#批处理枚举器

时间:2010-09-29 05:15:05

标签: c# linq ienumerable enumeration batch-processing

  

可能重复:
  LINQ Partition List into Lists of 8 members.

我有IEnumerable<T>并且我想将其转换为IEnumerable<List<T>>,其中每个List都是与原始枚举器的顺序相同的一批项目。每个批次的长度应为batchSize个项目,但最后一批应包含剩余项目的项目除外,因此可能小于batchSize

底层商店不是数据库或其他商店,我可以将批处理推送到系统的较低级别。相反,我需要自己累积批次,因为它是一个对象流,我一次只能获取一个。

序列非常长并且提取需要一段时间,因此我无法提前将整个枚举打包到List<T>或数组中。相反,我想获取batchSize结果,然后立即开始处理第一批。

我可能决定稍后将提取与处理异步(以便处理批处理1和提取批处理2可以并行发生)但是现在我只是在寻找单线程解决方案。

有关如何高效优雅地进行批量,流式枚举的任何建议?理想情况下,我想将其打包成我可以重复使用的扩展方法,例如

public static IEnumerable<T> Batch<T>(this IEnumerable<T> source, int count);

0 个答案:

没有答案