首页 > 编程语言 >C#实现DataTable数据分割处理

C#实现DataTable数据分割处理

时间:2024-03-14 16:46:26浏览次数:27  
标签:newrow 分割 Rows modcounts C# rev int dt DataTable

【转自】https://www.cnblogs.com/rongfengliang/p/4385572.html

一个简单的使用遍历的方式进行DataTable 的拆分

 

private static List<DataTable> DataTableSplite(DataTable dt, int modcounts)
        {
            List<DataTable> list = new List<DataTable>();

            int counts = dt.Rows.Count / modcounts;  ///  取整数个数

            int mod = dt.Rows.Count % modcounts;    ///  余数

            if (mod > 0)
            {
                int index = 0;
                ///  处理拆分倍数的部分
                for (int i = 0; i < counts; i++)
                {

                    DataTable dt1 = dt.Clone();
                    dt1.TableName = "count" + i;
                    for (int j = index * modcounts; j < (index + 1) * modcounts; j++)
                    {

                        DataRow newrow = dt.NewRow();
                        DataRow row1 = dt.Rows[j];
                        newrow["name"] = row1["name"];
                        newrow["age"] = row1["age"];
                        dt1.Rows.Add(newrow.ItemArray);
                    }
                    index++;
                    list.Add(dt1);
                }
                
                ///  处理余数部分的组合
                DataTable dt2 = dt.Clone();
                dt2.TableName = "modetable";
                for (int i = counts * modcounts; i < dt.Rows.Count; i++)
                {
                    DataRow newrow = dt.NewRow();
                    DataRow row1 = dt.Rows[i];
                    newrow["name"] = row1["name"];
                    newrow["age"] = row1["age"];
                    dt2.Rows.Add(newrow.ItemArray);
                }
                list.Add(dt2);

            }
            else
            {
                ///   余数为0 的情况处理
                int index = 0;
                for (int i = 0; i < counts; i++)
                {

                    DataTable dt1 = dt.Clone();
                    dt1.TableName = "modetable";
                    for (int j = index * modcounts; j < (index + 1) * modcounts; j++)
                    {

                        DataRow newrow = dt.NewRow();
                        DataRow row1 = dt.Rows[j];
                        newrow["name"] = row1["name"];
                        newrow["age"] = row1["age"];
                        dt1.Rows.Add(newrow.ItemArray);
                    }
                    index++;
                    list.Add(dt1);
                }
            }

            return list;
        }

实现的方式比较简单,同时也可以使用linq 的方式进行

代码如下:

private static List<DataTable> DataTableSplite2(DataTable dt, int modcounts)
        {

            int counts = dt.Rows.Count / modcounts;  ///  取整数个数

            List<DataTable> list = new List<DataTable>();                                     ///  

            int index = 0;
            for (int i = 0; i < counts + 1; i++)
            {
                list.Add(dt.AsEnumerable().Skip(index * modcounts).Take(modcounts).CopyToDataTable());

                index++;
            }
            return list;

        }

 

 

public static string PostDataTableData_Page(DataTable dt,string postUrl)
        {

            string rev = "";
            DataTable dtClone = new DataTable();
            int pageSize = 100;
            int count = dt.Rows.Count / pageSize;
for (int i_page = 0; i_page <= count; i_page++) { dtClone = new DataTable(); rev = ""; dtClone = dt.AsEnumerable().Skip(i_page * pageSize).Take(pageSize).CopyToDataTable(); if (dtClone != null && dtClone.Rows.Count > 0) { rev += "["; for (int i = 0; i < dtClone.Rows.Count; i++) { rev += "{"; for (int j = 0; j < dtClone.Columns.Count; j++) { rev += "\"" + dtClone.Columns[j].ColumnName + "\":\"" + dtClone.Rows[i][j].ToString().Replace("<", "&lt;").Replace(">", "&gt;").Replace("'", "&apos;").Replace("\"", "&quot;") + "\","; } rev = rev.TrimEnd(','); rev += "},"; } rev = rev.TrimEnd(','); rev += "]";
//post请求 rev = PostMoths(postUrl, rev); } }

 

标签:newrow,分割,Rows,modcounts,C#,rev,int,dt,DataTable
From: https://www.cnblogs.com/Violety/p/18073196

相关文章

  • VMware ESXi 8.0U1d macOS Unlocker & OEM BIOS 标准版和厂商定制版
    VMwareESXi8.0U1dmacOSUnlocker&OEMBIOS标准版和厂商定制版ESXi8.0U1标准版,Dell(戴尔)、HPE(慧与)、Lenovo(联想)、Inspur(浪潮)、Cisco(思科)、Hitachi(日立)、Fujitsu(富士通)、NEC(日电)OEM定制版请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u1......
  • VMware ESXi 8.0U1d macOS Unlocker & OEM BIOS 集成网卡驱动和 NVMe 驱动 (集成驱动
    VMwareESXi8.0U1dmacOSUnlocker&OEMBIOS集成网卡驱动和NVMe驱动(集成驱动版)发布ESXi8.0U1集成驱动版,在个人电脑上运行企业级工作负载请访问原文链接:https://sysin.org/blog/vmware-esxi-8-u1-sysin/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org发......
  • UVM - 6 (Transaction Modeling)
    内容uvm_sequence_item是transaction的基类可以使用uvm_sequence_item和uvm_transaction对数据进行建模什么是事务(transaction)?总线协议可以认为是一个事务UVM数据流testcase一般不产生数据,通常进行configsequencer会产生激励给到driver,传递的就是transaction......
  • 【Unity】Transform、Rigidbody、CharacterController移动
    前言在使用Unity开发的时候,移动是最最基础的一个需求,我来给大家简单的讲一下Unity中的几种常见的移动方法。1.Transform移动Transform移动就是修改物体的position①修改位置这里要注意:坐标分为世界坐标和本地坐标//将物体的世界坐标修改为(1,1,1)transform.posit......
  • 深入了解与全面解析华为认证(HCIA/HCIP/HCIE)
    一、网络行业技术认证网络行业对于技术评定一般分为两种,一种是企业认证,一种是国家认证企业认证属于技术认证,在国内的互联网企业都会承认,用于评定一个人的技术等级或者企业招投标的资质。网络行业认证最好的有三种,又分别有三种不同等级及多种方向,分别为:华为、思科、H3C(华......
  • 501. 二叉搜索树中的众数c
    /***Definitionforabinarytreenode.*structTreeNode{*intval;*structTreeNode*left;*structTreeNode*right;*};*//***Note:Thereturnedarraymustbemalloced,assumecallercallsfree().*/intmax,sum,pre;void......
  • centos sh脚本取日期
    在CentOS系统中,你可以使用date命令在shell脚本中获取当前日期。以下是一个简单的shell脚本示例,它会取得并显示当前日期:  #!/bin/bash #获取当前日期并格式化输出current_date=$(date+'%Y-%m-%d') #打印日期echo"当前日期是:$current_date"如果你想要获取特......
  • docker基础知识
    Docker容器基础介绍和操作-清白之年980410-博客园<linkrel="stylesheet"href="/css/blog-common.min.css?v=g-c5Yfdgh3oAoyQibjhmJ6ylVcBcMRHNIG6JkF70hpY"/><linkid="MainCss"rel="stylesheet"href="/skins/mountainink......
  • Linux下安装Docker
    Ubuntu安装Docker环境Ubuntu安装Docker环境的方法,在Linux服务器上运行docker用于开发测试通过Ubuntu自带的apt存储库在安装Docker引擎首次在新主机运行之前,需要更新Dockder存储库,然后你在存储库安装或更新Docker更新Dockerapt存储库sudoapt-getupdatesudoapt-......
  • CSharp的lambda表达式匿名类扩展方法
    c#的lamba表达式之前已经写过一些关于委托还有事件的文章,今天就来介绍一下lambda表达式。首先定义需要的函数以及委托{publicdelegatevoidDoNothingDelegate();publicdelegatevoidStudyDelegate(intid,stringname);privatevoidDoNothing(){Console.WriteL......