Datatable分割到DataSet中

/// <summary>
        /// 分解数据表
        /// </summary>
        /// <param name="originalTable">需要分解的表</param>
        /// <param name="pageSize">每个表包含的数据量</param>
        /// <returns></returns>
        public static DataSet SplitDataTable(System.Data.DataTable originalTable, int pageSize)
        {
            //获取所需创建的表数量
            //int tableCount = originalTable.Rows.Count / pageSize;
            //要分成的页数
            int tableCount = ((originalTable.Rows.Count - 1) / pageSize) + 1;

            //获取数据余数
            int remainder = originalTable.Rows.Count % pageSize;
            
            DataSet ds = new DataSet();
            //如果只需要创建1个表,直接将原始表存入DataSet
            if (tableCount == 1)
            {
                ds.Tables.Add(originalTable.Copy());
            }
            else
            {
                //表分离数组
                System.Data.DataTable[] tableSlice = new System.Data.DataTable[tableCount];
                //Save orginal columns into new table.            
                for (int n = 0; n < tableCount; n++)
                {
                    tableSlice[n] = new System.Data.DataTable();
                    foreach (DataColumn dc in originalTable.Columns)
                    {
                        tableSlice[n].Columns.Add(dc.ColumnName, dc.DataType);
                    }
                }

                //Import Rows
                for (int i = 0; i < tableCount; i++)
                {
                    // if the current table is not the last one
                    if (i != tableCount-1)
                    {
                        for (int j = i * pageSize; j < ((i + 1) * pageSize); j++)
                        {
                            tableSlice[i].ImportRow(originalTable.Rows[j]);
                        }
                    }
                    else
                    {
                        for (int k = i * pageSize; k < (i * pageSize + remainder); k++)
                        {
                            tableSlice[i].ImportRow(originalTable.Rows[k]);
                        }
                    }
                }
                //add all tables into a dataset                
                foreach (System.Data.DataTable dt in tableSlice)
                {
                    ds.Tables.Add(dt);
                }
            }
            return ds;
        }

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值