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();
                        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏儿童编程

天干地支五行八卦的对应关系

19090
来自专栏儿童编程

声音功能让儿童编程更有创造性

导读:Scratch中声音功能非常强大,除了常规的音效,你甚至可以模拟各种乐器的各个发音、设置节拍、休止……如果你愿意,甚至可以用它创作一个交响乐。我们可以引导...

13540
来自专栏儿童编程

什么样的人生才是有意义的人生——没有标准的标准答案

【导读】其实我们可以跳出这个小圈圈去更加科客观地看一下这个世界。在夜晚的时候我们仰望天空,浩瀚的宇宙中整个地球只是一粒浮尘,何况地球上一个小小的人类?在漫长的历...

1.8K50
来自专栏儿童编程

儿童创造力教育与编程教育的碰撞——MIT雷斯尼克教授最新理论梗概

儿童编程教育已经在我国各一线二线城市疯狂出现,颇有“烂大街”的趋势。我们不禁要问很多很多问题:

21870
来自专栏Ken的杂谈

【系统设置】CentOS 修改机器名

17830
来自专栏haifeiWu与他朋友们的专栏

复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负...

27540
来自专栏儿童编程

一张图理清《梅花易数》梗概

学《易经》的目的不一定是为了卜卦,但是了解卜卦绝对能够让你更好地了解易学。今天用一张思维导图对《梅花易数》的主要内容进行概括,希望能够给学友们提供帮助。

31240
来自专栏FSociety

SQL中GROUP BY用法示例

GROUP BY我们可以先从字面上来理解,GROUP表示分组,BY后面写字段名,就表示根据哪个字段进行分组,如果有用Excel比较多的话,GROUP BY比较类...

5.1K20
来自专栏儿童编程

《动物魔法学校》儿童学编程Scratch之“外观”部分

导读:本文通过一个案例《动物魔法学校》来学习Scratch语言的“外观”部分。之后通过一系列其他功能的综合运用对作品功能进行了扩展。

18840
来自专栏儿童编程

我不是算命先生,却对占卜有了疑惑——如何论证“占卜前提”的正确与否

事出有因,我对《周易》感兴趣了很多年。只是觉得特别有趣,断断续续学习了一些皮毛。这几天又偶然接触到了《梅花易数》,觉得很是精彩,将五行八卦天干地支都串联了起来。...

14610

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励