Belirli bir sayfaya atlamak için Skip
ve Take
diğer cevaplarda açıklandığı gibi kullanabilirsiniz. Ancak, tüm diziyi belirli bir boyuttaki parçalar halinde gruplandırmak isterseniz, bunun yerine GroupBy
'u kullanabilirsiniz.
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));
çıkışı: Burada küçük bir örnektir
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
+1 bu aslında sayfaları seçer tek cevap, geri kalanı sadece öğeleri seçin 11-20 ;-) –
ise olduğu Oldukça belli bannersPhrases bir 'IQueryable' yorumunun geri kalanını görmezden geliyor. Lütfen bunu evde yapmayın! Enumerable.Skip' O (n)! :-) (eğer bana güvenmiyorsan, IlSpy/Reflector'dan bakmayı dene). BannerPhrases'i önbelleğe almadığınızı bile hatırlayacağım. Umarım bannersPhrases sabit bir koleksiyondur, çünkü eğer çok "IEnumerable" ise o zaman her sayfa için yeniden üretilecek. – xanatos