Linq разделить последовательность на несколько последовательностей - C#
Формулировка задачи:
Имеем последовательсть IEnumerable<T>.
Необходимо "постраничное" чтение, то есть извлекать из этой последовательности, например, 30 элементов, потом еще 30 .... и остаток (меньше 30).
Кол-во элементов в данном случае фиксировано, но хотелось бы чтоб можно было указать как параметр.
Решение задачи: «Linq разделить последовательность на несколько последовательностей»
textual
Листинг программы
public static IEnumerable<IEnumerable<T>> Paginate<T>(this IEnumerable<T> collection, int pageSize) { if (collection == null) throw new ArgumentNullException("collection"); if (pageSize < 0) throw new ArgumentOutOfRangeException("pageSize"); var page = new T[pageSize]; int i = 0; foreach (T item in collection) { page[i++] = item; if (i == pageSize) { yield return page; page = new T[pageSize]; i = 0; } } if (i == pageSize) yield return page; else yield return page.Take(i).ToArray(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д