diff --git a/src/LinqRb/Extensions/IEnumerable.cs b/src/LinqRb/Extensions/IEnumerable.cs index b33114f..93a03c2 100644 --- a/src/LinqRb/Extensions/IEnumerable.cs +++ b/src/LinqRb/Extensions/IEnumerable.cs @@ -18,7 +18,25 @@ namespace System.Linq if(!predicate(element)) yield return element; } } - + + /// + /// Break a list of items into chunks of a specific size + /// + public static IEnumerable> Chunk(this IEnumerable source, int chunksize) + { + var enumerator = source.GetEnumerator(); + var arr = new List(chunksize); + while (enumerator.MoveNext()) + { + arr.Add(enumerator.Current); + if(arr.Count >= chunksize) + { + yield return arr; + arr = new List(chunksize); + } + } + } + /// /// Returns the first array that contains the object ///