Вы можете использовать метод расширения Пакет библиотеки MoreLinq : Пакетирует исходную последовательность в сегменты размера.
var list = new List<int>(Enumerable.Range(1, 25));
var buckets = list.Batch(size: 10);
foreach (var bucket in buckets)
{
Console.WriteLine(String.Join(", ", bucket));
}
выход
1, 2, 3, 4, 5, 6, 7, 8, 9, 10
11, 12, 13, 14, 15, 16, 17, 18, 19, 20
21, 22, 23, 24, 25