Linq разделить последовательность на несколько последовательностей - C#

Узнай цену своей работы

Формулировка задачи:

Имеем последовательсть IEnumerable<T>. Необходимо "постраничное" чтение, то есть извлекать из этой последовательности, например, 30 элементов, потом еще 30 .... и остаток (меньше 30). Кол-во элементов в данном случае фиксировано, но хотелось бы чтоб можно было указать как параметр.

Решение задачи: «Linq разделить последовательность на несколько последовательностей»

textual
Листинг программы
  1. public static IEnumerable<IEnumerable<T>> Paginate<T>(this IEnumerable<T> collection, int pageSize)
  2. {
  3.     if (collection == null) throw new ArgumentNullException("collection");
  4.     if (pageSize < 0) throw new ArgumentOutOfRangeException("pageSize");
  5.  
  6.     var page = new T[pageSize];
  7.     int i = 0;
  8.     foreach (T item in collection)
  9.     {
  10.         page[i++] = item;
  11.         if (i == pageSize)
  12.         {
  13.             yield return page;
  14.             page = new T[pageSize];
  15.             i = 0;
  16.         }
  17.     }
  18.     if (i == pageSize) yield return page;
  19.     else yield return page.Take(i).ToArray();
  20. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы