Есть список с большим количеством элементов List<int>, нужно его разбить на страницы определенного размера и вывести определенное количество страниц.
Сделал вот так, но что-то уродливо выглядит, особенно не нравится
1)
.ToLookup( .. )
.ToList() — только ради ForEach, может как-то можно из ToLookup это сделать без преобразования в список.
2) new { idx, x } — лишнее выделение памяти
3) int index = 0, как-то не хочется такой механизм использовать через переменную.
4) .Take( page_size * num_pages ) — тоже както вульгарно, хочется их как-то разнести чтобы они четко выражали свою задачу..а не перемножать огурцы с помидорами.
static void Main(string[] args)
{
List<int> list = new List<int>();
var rnd = new Random();
for (int i = 0; i < 1000; i++)
list.Add(rnd.Next(1000));
int index = 0;
int page_size = 10;
int num_pages = 5;
list.Select( x => new { idx = index++, x })
.Take( page_size * num_pages )
.ToLookup( key => key.idx/page_size )
.ToList().ForEach(
k =>
{
Console.WriteLine( "________Страница № {0}________", k.Key );
k.ToList().ForEach(
item => Console.Write( "{0},", item.x )
);
Console.WriteLine("");
Console.WriteLine("");
}
);
Console.ReadKey();
}