using System.Collections.Generic;
public static void Main()
List<int> values = new() { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
var chunked = values.Chunk(3);
foreach (var chunk in chunked)
Console.WriteLine("First value of chunk: " + chunk.First());
public static IEnumerable<IEnumerable<TValue>> Chunk<TValue>(
this IEnumerable<TValue> values,
using(var enumerator = values.GetEnumerator())
while(enumerator.MoveNext())
yield return GetChunk(enumerator, chunkSize).ToList();
private static IEnumerable<T> GetChunk<T>(
IEnumerator<T> enumerator,
yield return enumerator.Current;
} while(--chunkSize > 0 && enumerator.MoveNext());