选择前10条记录,然后选择下10条,使用Linq进行分页

本文关键字:10条 选择 分页 Linq 然后 记录 使用 | 更新日期: 2023-09-27 18:27:57

如何选择前10条记录,然后是下一个10条,然后是接下来的10条,只要数组不会结束。

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

如何获得接下来的10张唱片?

选择前10条记录,然后选择下10条,使用Linq进行分页

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 (ideally this value will be passed to this logic/function from outside)
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();

如果您正在进行分页,并且只想跳到特定页面,则可以使用SkipTake,如其他一些答案中所述。但是,如果要将整个序列分组为特定大小的块,则可以使用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、d1:e、f、g、h2:i,j,k,l3:m,n,o,p4:q,r,s,t5:u,v,w,x6:y,z

您可以使用.Skip()。这将返回接下来的10个项目:

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

您可以使用Skip扩展方法

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