以下是模拟分页的Linq方法!
有个实现IEnumerable接口的数组
string[] Array = { "Hjiang", "Hwang", "Wange", "Hwan", "Hcheng", "Hhoho" };
封装分页的方法
/// <summary>
/// 分页
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="List">实现IEnumerable</param>
/// <param name="FunWhere">delegate检索条件</param>
/// <param name="FunOrder">delegate排序</param>
/// <param name="PageSize">每页显示数</param>
/// <param name="PageIndex">当前页码</param>
/// <returns></returns>
static IEnumerable<T> GetIenumberable<T>(IEnumerable<T> List,Func<T, bool> FunWhere,Func<T,string> FunOrder, int PageSize, int PageIndex)
{
var rance = List.Where(FunWhere).OrderByDescending(FunOrder).Select(t => t).Skip((PageIndex - 1) * PageSize).Take(PageSize);
return rance;
}
然后我们对数组进行模拟分页
以下读取第一页
var sArray = GetIenumberable<String>(Array, r => r.StartsWith("H"), r => r, 1, 1);
foreach (var s in sArray)
{
Console.WriteLine(s);
}
第二页
var sArray = GetIenumberable<String>(Array, r => r.StartsWith("H"), r => r, 1, 2);
foreach (var s in sArray)
{
Console.WriteLine(s);
}