【c#】DataTable分页处理

【c#】DataTable分页处理【c#】DataTable分页处理

大家好,又见面了,我是你们的朋友全栈君。

   最近在做项目的过程中,需要将从数据库查出来的数据传输给另外一个系统进行分析,我是通过http的post请求发送的,但是在传输的过程中,当传输两万多条的数据是,请求很慢,而且每次只能穿五千多条的数据,剩下的就都丢失了,出现这个问题的原因是对方对http请求最大数据量的设置是2M,所以我们协商的结果是在我们上传数据之前对数据进行分片。所以我就对查出来的数据进行分页,然后按页传输。

  这个分页跟我们平时页面上做的分页的思路一样,我是一次性从数据库里把数据查出来,然后对datatable进行分页,也就是假分页吧。

抽象出来的分页的方法:

        /// <summary>
        /// DataTable分页处理
        /// </summary>
        /// <param name="dt">想要进行分页的DataTable</param>
        /// <param name="PageIndex">当前页数</param>
        /// <param name="PageSize">每页记录数</param>
        /// <returns></returns>
        public DataTable GetPagedTable(DataTable dt, int PageIndex, int PageSize)
        {
            if (PageIndex == 0)
                return dt;//0页代表每页数据,直接返回

            DataTable newdt = dt.Copy();
            newdt.Clear();//copy dt的框架

            int rowbegin = (PageIndex - 1) * PageSize;
            int rowend = PageIndex * PageSize;

            if (rowbegin >= dt.Rows.Count)
                return newdt;//源数据记录数小于等于要显示的记录,直接返回dt

            if (rowend > dt.Rows.Count)
                rowend = dt.Rows.Count;
            for (int i = rowbegin; i <= rowend - 1; i++)
            {
                DataRow newdr = newdt.NewRow();
                DataRow dr = dt.Rows[i];
                foreach (DataColumn column in dt.Columns)
                {
                    newdr[column.ColumnName] = dr[column.ColumnName];
                }
                newdt.Rows.Add(newdr);
            }
            return newdt;
        }

具体调用:

//总记录数,dt为想要对其进行分页的DataTable
int parkingCount = dt.Rows.Count;
int pageSize = 4000; //每页显示记录数
int pageCount;       //总页数
if (parkingCount % pageSize == 0)
{
    pageCount = parkingCount / pageSize;
}
else
{
    pageCount = parkingCount / pageSize + 1;
}

//pageIndex:当前页数
//在这里因为是控制台程序,所以不能实时接收pageIndex
List<String> list = new List<String>();
for (int pageIndex = 1; pageIndex <= pageCount; pageIndex++)
{
        DataTable pageDt = GetPagedTable(dt, pageIndex, pageSize);
        String json = JsonHelper.Serialize(dt);
        list.Add(json);
        LogHelper.Info("查询出来的停车记录" + json);
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/105678.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • JAVA卸载与安装

    JAVA卸载与安装卸载JDK1、删除Java的安装目录电脑-属性-高级系统设置-环境变量-JAVA_HOME的值就是放主程序的目录,删掉2、删除环境变量里的JAVA_HOME电脑-属性-高级系统设置-环境变量-JAVA_HOME这一行删除3、删除path下关于Java的目录电脑-属性-高级系统设置-环境变量-path中删掉跟JAVA_HOME相关的4、Java-versionwin+rcmdJava-version找不到命令安装JDK1,百度搜索JDK8,找到下载地址2、

    2022年5月12日
    34
  • 快速排序算法详细图解JAVA_实现快速排序

    快速排序算法详细图解JAVA_实现快速排序高快省的排序算法有没有既不浪费空间又可以快一点的排序算法呢?那就是“快速排序”啦!光听这个名字是不是就觉得很高端呢。假设我们现在对“61279345108”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数(不要被这个名词吓到了,就是一个用来参照的数,待会你就知道它用来做啥…

    2022年8月30日
    0
  • 《深入浅出WPF》读书笔记

    《深入浅出WPF》读书笔记深入浅出 WPF 要点总结 感谢刘铁锰写出这么好的书

    2025年6月29日
    1
  • 静态网页制作方法_如何制作简单的静态网页

    静态网页制作方法_如何制作简单的静态网页这是仿照中国高等教育学生信息网写的一个静态网页(参考2020年3月份的)这也是我当时辛辛苦苦写了几天的劳动成果,希望大家可以尊重。截图如下下面是主要的代码:<!DOCTYPEhtml><html><head><metacharset=”utf-8″><!–国际通用码–><metaname=”viewport”content=”width=device-width,initial-scale=1.0,minim

    2022年9月5日
    4
  • mysql日志文件位置_linux怎么导出日志文件

    mysql日志文件位置_linux怎么导出日志文件登录mysql终端mysql-uroot-p输入密码:进入mysql>1.日志文件路径mysql>showvariableslike‘general_log_file’;±—————–±———————————–+|Variable_name|Value|±—————–±———————————–+|general_log_f

    2022年8月31日
    2
  • 快速排序(Python实现)

    一、算法介绍快速排序是经常考查到的排序算法,这里对快排算法做一下总结。快速排序是“交换”类的排序,它通过多次划分操作实现排序!以升序为例,其执行流程可以概括为:每一趟排序选择当前所有子序列的一个关键字(通常是第一个)作为枢轴量,将子序列中比枢轴量小的移到枢轴前边,比枢轴大的移到枢轴后边,具体过程是一个交替扫描和交换的过程。当本趟所有子序列都被枢轴以上述规则划分完毕后会得到新的一组更短的子序列,…

    2022年4月6日
    47

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号