使用Skip和Take方法进行分页(但请记住,它将为您要获取的每个页面迭代集合):
int pageSize = 20;
int pageNumber = 2;
var result = mobile_numbers.Skip(pageNumber * pageSize).Take(pageSize);
如果您只需要在“页面”上拆分数组,请考虑使用MoreLinq(可从 NuGet 获得)批处理方法:
var pages = mobile_numbers.Batch(pageSize);
如果您不想使用整个库,请查看Batch 方法实现。或者使用这个扩展方法:
public static IEnumerable<IEnumerable<T>> Batch<T>(
this IEnumerable<T> source, int size)
{
T[] bucket = null;
var count = 0;
foreach (var item in source)
{
if (bucket == null)
bucket = new T[size];
bucket[count++] = item;
if (count != size)
continue;
yield return bucket;
bucket = null;
count = 0;
}
if (bucket != null && count > 0)
yield return bucket.Take(count).ToArray();
}
用法:
int pageSize = 20;
foreach(var page in mobile_numbers.Batch(pageSize))
{
foreach(var item in page)
// use items
}