Linq to Object实现分页获取数据

简介: 最后调用的CSharp代码可以是: int totalcount = dboperator.Customers.Count(); //总记录数 int pagesize = 100;//每页显示数 ...
最后调用的CSharp代码可以是:

            int totalcount = dboperator.Customers.Count();       //总记录数
            int pagesize = 100;//每页显示数
            
//错误写法 int pages = (int)Math.Round((double)totalcount / pagesize);//总页数 //正确写法:向上取整 int pages= (int)Math.Ceiling((double)totalcount / pagesize); for (int pageindex = 1; pageindex <= pages; pageindex++) { var customers = dboperator.Customers.OrderBy(c => c.ContactName) .Skip((pageindex - 1) * pageSize) .Take(pageSize); //... } 加入总记录数为501,每页显示100,上面pages总页数为5。正确应该为6 修改: //int pages = (int)Math.Round((double)totalcount / pagesize); int pages = PageCount(totalcount, pagesize); /// <summary> /// 返回分页的页数 /// </summary> /// <param name="count">总条数</param> /// <param name="pageye">每页显示多少条</param> /// <returns>如果 结尾为0:则返回1</returns> public static int PageCount(int count, int pageye) { int page = 0; int sesepage = pageye; if (count % sesepage == 0) { page = count / sesepage; } else { page = (count / sesepage) + 1; } if (page == 0) { page += 1; } return page; }

  

本文参考博客:http://www.cnblogs.com/wintersun/archive/2009/10/06/1578401.html

DataTable分页代码http://www.cnblogs.com/jyshi/archive/2011/08/09/2132758.html

1.Math.Ceiling() 

返回大于或等于指定的双精度浮点数的最小整数值。

例如:Math.Ceiling(32.6)=33; Math.Ceiling(32.0)=32;

 

 

2.Math.Floor() 

用法和ceiling相反,返回小于或等于指定的双精度浮点数的最小整数值。

例如: Math.Floor(32.6)=32;;Math.Floor(32.0)==32;

 

3.Math.Round()

取指定位数的小数。

例如: Math.Round(36.236,2)=36.24; Math.Round(36.232,2)=36.23;

 

4.Math.Log()

取指定数字在使用指定底时的对数。

例如: 一本16开的书,计算对开了几次。Math.Log(16,2)=4

 

Linq 对List<T>进行分页:

 int pageSize = 150;
                        int totalPageCount = 0;
                        totalPageCount = (gasBottlesList.Count() / pageSize + 1);

                        for (int i = 1; i <= totalPageCount; i++)
                        {
                            string msg = string.Empty;
                            msg = "执行进度(" + i.ToString2() + "/" + totalPageCount.ToString2() + ")";
                            frmLoading.SetCaption(msg);
                            status = DataCenterService.Instance.ImportGasBottlesBySqlBulkCopy(gasBottlesList.Take(pageSize * i).Skip(pageSize * (i - 1)).ToArray());
                            frmLoading.SetCaption(msg + ",结果:" + (status == true ? "成功" : "失败"));
                            //System.Threading.Thread.Sleep(300);
                            Application.DoEvents();
                        }

  

目录
相关文章
Vue3接口数据报错TypeError: target must be an object
Vue3接口数据报错TypeError: target must be an object
1433 0
|
存储 数据挖掘 大数据
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(一)
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(一)
1193 0
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(一)
|
4月前
|
存储 关系型数据库 MySQL
|
6月前
|
JavaScript 前端开发 测试技术
Map 和 Object 在处理大量数据时性能差异
Map 和 Object 在处理大量数据时性能差异
|
JSON JavaScript 数据格式
vue query传参刷新后数据变成[Object Object]
vue query传参刷新后数据变成[Object Object]
167 0
|
JavaScript 前端开发
javascript实现对象数据键值不同的Object.keys循环读取解决方案
javascript实现对象数据键值不同的Object.keys循环读取解决方案
90 0
javascript实现对象数据键值不同的Object.keys循环读取解决方案
|
JavaScript 前端开发 API
Vue数据监听Object.definedProperty()方法的实现
Vue数据监听Object.definedProperty()方法的实现
|
前端开发 数据可视化
漏刻有时数据可视化大屏常见问题(2):Ajax获取服务器数据出错了![object Object]
漏刻有时数据可视化大屏常见问题(2):Ajax获取服务器数据出错了![object Object]
177 0
|
JavaScript
Object.assign(this.$data, this.$options.data())-vue清空数据
Object.assign(target,...source)是es6新增的方法,可以合并对象,用于将所有可枚举属性的值从一个或多个源对象复制到目标对象,它将返回目标对象,target:目标对象,source:源对象,通过Object.assign方法,把source合并给target,如果目标对象中的属性名与源对象中的属性名相同时,则属性将被源对象中的属性覆盖,然后返回target对象;
232 0
|
数据挖掘 大数据 索引
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(三)
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(三)
279 0
Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(三)