Linq to Object实现分页获取数据

最后调用的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();
                        }

  

时间: 2024-08-02 10:04:53

Linq to Object实现分页获取数据的相关文章

导出历史记录---分页获取数据的疑惑

问题描述 通过cursor向后获取数据,如果一直有消息产生,是不是一直可以获取到数据?如果不是,获取数据的结点在哪里?还是空的cursor么? 解决方案 通过cursor获取下一页的数据,最后一页时就没有curosr返回了.

linq查询集合并分页展示数据

private void Bind() { if (Request.QueryString["QuestionNo"] != null) { string QuestionNo = Request.QueryString["QuestionNo"].ToString(); string BeginDate = DateTime.Now.AddMonths(-2).ToShortDateString(); string EndDate = DateTime.Now.A

分页解决方案 之 QuickPager的使用方法(PostBack分页、自定义获取数据)

          适用范围:网站后台管理.OA.CRM.CMS等,从关系型数据库里提取数据,或者XML等获取数据,不愿意使用Pager_SQL.DataAccessLibrary的情况.       优点:可以使用自己喜欢的方式获取数据,不仅仅限于关系型数据库,其他的也都可以.       缺点,要写的代码比较多.       Demo下载:http://www.cnblogs.com/jyk/archive/2008/07/29/1255891.html       使用方法:   usin

DataTables+BootStrap组合使用Ajax来获取数据并且动态加载dom的方法(排序,过滤,分页等)_jquery

Datatables是一款jquery表格插件.它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能. 主要功能 分页,即时搜索和排序 几乎支持任何数据源:DOM, javascript, Ajax 和 服务器处理 支持不同主题 DataTables, jQuery UI, Bootstrap, Foundation 各式各样的扩展: Editor, TableTools, FixedColumns -- 丰富多样的option和强大的API 支持国际化 超过2900+个单元测试 免

Linq配合AspNetPager高效分页方法

Linq配合AspNetPager高效分页方法   分页方式: 获取数据总条数: var Count = db.XXX.Count();   如果要是以往的写法还得写 select count(*) from XXXX; 还得调用SQLHelper.cs类里面的方法才行,现在就这么一句话就搞定--  汗额.. 再使用Skip()和Take()方法进行分页   说明:Skip()跳过集合的前n个元素:延迟.即我们跳过给定的数目返回后面的结果集. 说明:Take()获取集合的前n个元素:延迟.即只返

Linq配合AspNetPager高效分页

最近正在学习Linq,看到分页这里的时候感觉真的很简单,可是又担心学着学习就把知识混在一起,不知道大家在刚学的时候是不是跟我一样,因为他有的地主真的太像SQL了 分页方式: 获取数据总条数: var Count = db.XXX.Count();   如果要是以往的写法还得写 select count(*) from XXXX; 还得调用SQLHelper.cs类里面的方法才行,现在就这么一句话就搞定--  汗额.. 再使用Skip()和Take()方法进行分页   说明,引用至李永京博客想学L

jsp/javabean分页列出数据

js|分页|数据 我的第一个jsp分页代码 jsp文件:pagedata.jsp //显示数据 javabean:DataConn.java //连接数据库 javabean:GetCount.java //获得数据记录数 DataConn.java文件内容: package aliang_org;import java.sql.*;public class DataConn{ public static Connection getDataConn() { Connection conn =

Hibernate获取数据方式与缓存使用

Hibernate获取数据的方式有不同的几种,其与缓存结合使用的效果也不尽相同,而Hibernate中具体 怎么使用缓存其实是我们很关心的一个问题,直接涉及到性能方面. 缓存在Hibernate中主要有三个方面:一级缓存.二级缓存和查询缓存:一级缓存在Hibernate中对应 的即为session范围的缓存,也就是当session关闭时缓存即被清除,一级缓存在Hibernate中是不可配置 的部分:二级缓存在Hibernate中对应的即为SessionFactory范围的缓存,通常来讲Sessi

jQuery DataTables插件从服务器端获取数据的方法

sAjaxSource参数,值是url.table会发送ajax请求,从服务器端获取数据.服务器端返回的数据应该是一个可以被转换成JSON对象的JSON字符串.这个字符串必须严格符合JSON格式的要求.否则会出错.该数据对象该对象的key应该是"aaData",例如: Js代码: { "aaData": { "columnA":"valueA", "columnB":"valueB",