如何选择前10个记录,然后是下一个10,然后是下一个10,只要数组不会结束。
Phrases = bannersPhrases.Select(x=>x.Phrase).Take(10).ToArray()
如何获得接下来的10条记录?
答案 0 :(得分:83)
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();
答案 1 :(得分:19)
如果您正在进行分页,并且只想跳到特定页面,则可以使用Skip
和Take
,如其他一些答案中所述。但是,如果您希望将整个序列分组为特定大小的块,则可以使用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, 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
答案 2 :(得分:6)
您可以使用.Skip()
。这将返回接下来的10个项目:
Phrases = bannersPhrases.Select(x=>x.Phrase).Skip(10).Take(10).ToArray()
答案 3 :(得分:3)
您可以使用Skip扩展方法
Phrases = bannersPhrases.Select(x=>x.Phrase).Skip(10).Take(10).ToArray()