博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Linq 数据排序,分页
阅读量:6028 次
发布时间:2019-06-20

本文共 3878 字,大约阅读时间需要 12 分钟。

  在用Linq查询中,常常需要用到分页功能,因为每次都需要些分页这些功能,于是把分页功能提取出来,不喜大家勿喷,只是贴出来,自觉地很实用。一下贴出核心代码:

1  ///  2     /// LinqHelper 主要用于数据集,排序 分页等功能 3     ///  4     public class LinqHelper 5     { 6         ///  7         /// 排序 8         ///  9         /// 
10 /// 11 /// 12 /// 13 ///
14 public static IQueryable
DataSorting
(IQueryable
source, string sortExpression, string sortDirection)15 {16 string sortingDir = string.Empty;17 if (sortDirection.ToUpper().Trim() == "ASC")18 sortingDir = "OrderBy";19 else if (sortDirection.ToUpper().Trim() == "DESC")20 sortingDir = "OrderByDescending";21 ParameterExpression param = Expression.Parameter(typeof(T), sortExpression);22 PropertyInfo pi = typeof(T).GetProperty(sortExpression);23 Type[] types = new Type[2];24 types[0] = typeof(T);25 types[1] = pi.PropertyType;26 Expression expr = Expression.Call(typeof(Queryable), sortingDir, types, source.Expression, Expression.Lambda(Expression.Property(param, sortExpression), param));27 IQueryable
query = source.AsQueryable().Provider.CreateQuery
(expr);28 return query;29 }30 ///
31 /// 分页32 /// 33 ///
34 ///
35 ///
36 ///
37 ///
38 public static IQueryable
DataPaging
(IQueryable
source, int pageNumber, int pageSize)39 {40 return source.Skip((pageNumber - 1) * pageSize).Take(pageSize);41 }42 ///
43 /// 排序并分页 44 /// 45 ///
46 ///
47 ///
48 ///
49 ///
50 ///
51 ///
52 public static IQueryable
SortingAndPaging
(IQueryable
source, string sortExpression, string sortDirection, int pageNumber, int pageSize)53 {54 if (!string.IsNullOrEmpty(sortDirection))55 {56 // IQueryable
query = DataSorting
(source, sortExpression, sortDirection);57 }58 IQueryable
query = source.AsQueryable();59 return DataPaging(query, pageNumber, pageSize);60 }61 }

在分页中需要一个辅助的类用于分页排序的类,用于限定分页的参数:

1 //排序用到的参数 2     public class GridPager 3     { 4         ///  5         /// //每页行数 6         ///  7         public int rows { get; set; } 8         ///  9         /// //当前页是第几页10         /// 11         public int page { get; set; }12         /// 13         /// //排序方式14         /// 15         public string order { get; set; }16         /// 17         /// //排序列18         /// 19         public string sort { get; set; }20         /// 21         /// //总行数 22         /// 23         public int totalRows { get; set; }     24     }

 使用方法*.ASP中 XXXX.ashx一般处理程序中,调用方法为:

1  public void GetAllInfoRW(HttpContext context) 2     { 3         string retStr = ""; 4         string rowsStr = ""; 5         int rCount = 0; 6        GridPager pager = new GridPager 7         { 8             page = Convert.ToInt32(context.Request["page"]), 9             rows = Convert.ToInt32(context.Request["rows"]),10             sort = "RTime",11             order = "DESC"12         };13         string chk = context.Request["chk"].ToString();14         List
list = CCRK_CKDBiz.GetAllShowInfo(chk,ref rCount);15 var resout = LinqHelper.SortingAndPaging(list.AsQueryable(), pager.sort, pager.sort, pager.page, pager.rows);16 rowsStr = JsonConvert.SerializeObject(list);17 18 retStr = "{\"total\":\"" + rCount + "\",\"rows\":" + rowsStr + "}";19 20 context.Response.Write(retStr);21 }

在easyui-datagrid中注意json格式

 

在使用JsonConvert.SerializeObject(object); 方法中需要引入命名空间,【using  Newtonsoft.Json】可以通过可以通过Nuget程序管理工具在http://www.nuget.org/官网上下载

在VS中通过Nuget程序管理工具输入命令:Install-Package Newtonsoft.Json 

 

转载于:https://www.cnblogs.com/imeiba/p/5141408.html

你可能感兴趣的文章
[共通]手机端网页开发问题及解决方法整理
查看>>
思科分发列表过滤路由(RIP)动态路由协议篇
查看>>
可登录的用户数量是1.6万个,软件的性能得到充分的考验
查看>>
[实战]MVC5+EF6+MySql企业网盘实战(23)——文档列表
查看>>
[译] ES2018(ES9)的新特性
查看>>
Java生成-zipf分布的数据集(自定义倾斜度,用作spark data skew测试)
查看>>
正则与sed,grep,awk三剑客
查看>>
诊断一句SQL不走索引的原因
查看>>
Linux pipe函数
查看>>
图片标注工具LabelImg使用教程
查看>>
(原創) 如何設計一個數位相框? (SOC) (Quartus II) (SOPC Builder) (Nios II) (TRDB-LTM) (DE2-70)...
查看>>
/etc/profile文件内容
查看>>
量词 匹配优先与忽略优先
查看>>
一页纸IT项目管理:大道至简的实用管理沟通工具
查看>>
汽车知识:车内异味的清除方法
查看>>
IE6 7下绝对定位引发浮动元素神秘消失
查看>>
浏览器的回流和重绘及其优化方式
查看>>
Eclipse基金会发布Eclipse Photon IDE
查看>>
jQuery选择器和事件
查看>>
2.4 salt grains与pillar jinja的模板
查看>>