Si usted está haciendo la paginación y lo que desea salte a una página en particular, puede usar Skip
y Take
como se describe en algunas de las otras respuestas. Sin embargo, si desea agrupar toda la secuencia en trozos de un tamaño particular, puede usar GroupBy
en su lugar. Aquí hay un pequeño ejemplo:
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));
La salida es:
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 bastante seguro de que esta es la única respuesta que realmente selecciona páginas, el resto sólo artículos selectos 11-20 ;-) Si –
bannersPhrases es un 'IQueryable' ignora el resto del comentario. Por favor, no hagas esto en casa! 'Enumerable.Skip' es O (n)! :-) (si no confías en mí, intenta mirarlo a través de IlSpy/Reflector). Incluso notaré que no está almacenando en caché bannersPhrases. Espero que bannersPhrases sea una colección fija, porque si es demasiado 'IEnumerable', se regenerará para cada página. – xanatos