From b41e59de99295eedd305a1e29df26dc797fe236c Mon Sep 17 00:00:00 2001 From: Tommy Parnell Date: Sat, 31 Oct 2015 02:10:06 -0400 Subject: [PATCH] add chunk --- src/LinqRb/Extensions/IEnumerable.cs | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) 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 ///