学习LINQ时,经常会遇到分页问题,这里将介绍用Linq实现分页来解决分页问题。
LINQ是Language Integrated Query (语言集成查询)。当我们要对数据库表进行查询的时候,我们一定会编写"select * from sometable where 的语句。好,那我们现在根据LINQ的语法,完全可以将我们熟悉的SQL中像"select","from","where"等语句在.NET Framework环境中顺利使用并且大大提高开发的效率。
以下是模拟分页的Linq方法! 用Linq实现分页,有个实现IEnumerable接口的数组。
- string[] Array = { "Hjiang", "Hwang", "Wange", "Hwan", "Hcheng", "Hhoho" };
封装分页的方法
- /// <summary>
- /// 分页
- /// < SPAN>summary>
- /// <typeparam name="T">< SPAN>typeparam>
- /// <param name="List">实现IEnumerable< SPAN>param>
- /// <param name="FunWhere">delegate检索条件< SPAN>param>
- /// <param name="FunOrder">delegate排序< SPAN>param>
- /// <param name="PageSize">每页显示数< SPAN>param>
- /// <param name="PageIndex">当前页码< SPAN>param>
- /// <returns>< SPAN>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);
- }
以上介绍用Linq实现分页。
【编辑推荐】