var total = bannersPhrases.Select(p => p.Phrase).Count();
var pageSize = 10; // set your page size, which is number of records per page
var page = 1; // set current page number, must be >= 1
var skip = pageSize * (page-1);
var canPage = skip < total;
if (canPage) // do what you wish if you can page no further
return;
Phrases = bannersPhrases.Select(p => p.Phrase)
.Skip(skip)
.Take(pageSize)
.ToArray();
Ответ 2
Если вы выполняете пейджинг, и вы просто хотите перейти на конкретную страницу, вы можете использовать Skip и Take, как описано в некоторых других ответах. Однако, если вы хотите группировать всю последовательность в куски определенного размера, вы можете использовать GroupBy вместо этого. Вот небольшой пример:
var groupSize = 4;
// The characters 'a' - 'z'.
var source = Enumerable.Range(0, 26).Select(i => (Char) ('a' + i));
var groups = source
.Select((x, i) => new { Item = x, Index = i })
.GroupBy(x => x.Index/groupSize, x => x.Item);
foreach (var group in groups)
Console.WriteLine("{0}: {1}", group.Key, String.Join(", ", group));
Вывод:
0: a, b, c, d
1: e, f, g, h
2: i, j, k, l
3: m, n, o, p
4: q, r, s, t
5: u, v, w, x
6: y, z
Ответ 3
Вы можете использовать .Skip(). Это вернет следующие 10 элементов: