Se stai facendo il paging e si desidera solo per salta a una pagina specifica puoi usare Skip
e Take
come descritto in alcune delle altre risposte. Tuttavia, se si desidera raggruppare l'intera sequenza in blocchi di una determinata dimensione, è possibile utilizzare invece GroupBy
. Ecco un piccolo esempio:
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));
Il risultato è:
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
fonte
2012-03-15 11:03:29
+1 Abbastanza certo questa è l'unica risposta che seleziona effettivamente pagine, il resto solo selezionare elementi 11-20 ;-) –
Se bannersPhrases è un 'IQueryable' ignora il resto del commento. Per favore non farlo a casa! 'Enumerable.Skip' è O (n)! :-) (se non ti fidi di me, prova a guardarlo attraverso IlSpy/Reflector). Prenderò anche nota che non stai memorizzando nella cache i banner. Spero che bannersPhrases sia una raccolta fissa, perché se è troppo un 'IEnumerable' allora verrà rigenerato per ogni pagina. – xanatos