Selezionare i primi 10 record, quindi il 10 successivo, il paging tramite Linq

Come selezionare i primi 10 record, poi il prossimo 10, poi il prossimo 10 e finché l’array non finirà.

Phrases = bannersPhrases.Select(x=>x.Phrase).Take(10).ToArray() 

Come ottenere i prossimi 10 record?

 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(); 

Se si sta eseguendo il paging e si desidera semplicemente passare a una determinata pagina, è ansible utilizzare Skip and Take come descritto in alcune delle altre risposte. Tuttavia, se si desidera raggruppare l’intera sequenza in blocchi di una particolare dimensione, è ansible 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)); 

L’output è:

 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

Puoi usare .Skip() . Questo restituirà i prossimi 10 elementi:

  Phrases = bannersPhrases.Select(x=>x.Phrase).Skip(10).Take(10).ToArray() 

Puoi utilizzare il metodo di estensione Skip

 Phrases = bannersPhrases.Select(x=>x.Phrase).Skip(10).Take(10).ToArray()