using System.Collections.Generic;
public static void Main()
var inputs = Enumerable.Range(0,10).ToArray();
foreach(var batch in inputs.Batch(2))
var temp1= inputs.Batch(2);
var temp2= inputs.Batch(2).Count();
var temp3= inputs.Batch(2).ToList();
var temp4= inputs.Batch(2).ToList().Count();
var temp5= temp3.Count();
public static class ExtFoo{
public static IEnumerable<IEnumerable<T>> Batch<T>(this IEnumerable<T> source, int size) {
using (IEnumerator<T> enumerator = source.GetEnumerator())
while (enumerator.MoveNext())
yield return TakeIEnumerator(enumerator, size);
private static IEnumerable<T> TakeIEnumerator<T>(IEnumerator<T> source, int size) {
do yield return source.Current;
while (++i < size && source.MoveNext());