using System.Collections.Generic; namespace Extensions { public static class EnumerablePaginationExtensions { public static IEnumerable<IEnumerable<T>> Paginate<T>(this IEnumerable<T> items, int pageSize) { var page = new List<T>(); foreach (var item in items) { page.Add(item); if (page.Count >= pageSize) { yield return page; page = new List<T>(); } } if (page.Count > 0) { yield return page; } } } }