diff --git a/ZeroLevel/Services/Extensions/EnumerableExtensions.cs b/ZeroLevel/Services/Extensions/EnumerableExtensions.cs index 4acd2fc..bfb02b7 100644 --- a/ZeroLevel/Services/Extensions/EnumerableExtensions.cs +++ b/ZeroLevel/Services/Extensions/EnumerableExtensions.cs @@ -31,5 +31,25 @@ namespace ZeroLevel { return !IsEmpty(collection); } + + public static IEnumerable Batch(this IEnumerator source, int size) + { + yield return source.Current; + for (var i = 1; i < size && source.MoveNext(); i++) + { + yield return source.Current; + } + } + + public static IEnumerable> Chunkify(this IEnumerable source, int size) + { + using (var enumerator = source.GetEnumerator()) + { + while (enumerator.MoveNext()) + { + yield return Batch(enumerator, size); + } + } + } } } \ No newline at end of file