IEnumerable.Chunk

public static IEnumerable<IEnumerable<T>> Chunk<T>(this IEnumerable<T> list, int chunkSize)
{
	if (chunkSize <= 0)
	{
		throw new ArgumentException("chunkSize must be greater than 0.");
	}

	while (list.Any())
	{
		yield return list.Take(chunkSize);
		list = list.Skip(chunkSize);
	}
}
Example:
var list = new List<int> { 1, 2, 3, 4, 5, 6, 7 };

var chunks = list.Chunk(3);
// returns { { 1, 2, 3 }, { 4, 5, 6 }, { 7 } }

Description

Splits an enumerable into chunks of a specified size.

Details

Double click on the code to select all.

 

;