首页 > Windows开发 > 详细

C#将DataTable按固定个数拆分成多个表

时间:2021-01-18 19:49:00      阅读:149      评论:0      收藏:0      [点我收藏+]

项目中出现数据量特别大的DataTable,做循环处理时比较慢,

需要将DataTable拆分成多个做多线程处理。

拆分的方法如下,记录一下:

        /// <summary>
        /// 分解数据表
        /// </summary>
        /// <param name="orgTable">需要分解的表</param>
        /// <param name="rowsNum">每个表包含的数据量</param>
        /// <returns></returns>
        public DataSet SplitDataTable(DataTable orgTable, int rowsNum)
        {
            //获取所需创建的表数量
            var tableNum = orgTable.Rows.Count / rowsNum;
            //获取数据余数
            var remainder = orgTable.Rows.Count % rowsNum;
            var ds = new DataSet();
            //如果只需要创建1个表,直接将原始表存入DataSet
            if (tableNum == 0)
            {
                ds.Tables.Add(orgTable);
            }
            else
            {
                var tableSlice = new DataTable[tableNum];
                for (var c = 0; c < tableNum; c++)
                {
                    tableSlice[c] = new DataTable();
                    foreach (DataColumn dc in orgTable.Columns)
                    {
                        tableSlice[c].Columns.Add(dc.ColumnName, dc.DataType);
                    }
                }
                for (var i = 0; i < tableNum; i++)
                {
                    //非最后一个DataTable
                    if (i != tableNum - 1)
                    {
                        for (var j = i * rowsNum; j < ((i + 1) * rowsNum); j++)
                        {
                            tableSlice[i].ImportRow(orgTable.Rows[j]);
                        }
                    }
                    else
                    {
                        for (var k = i * rowsNum; k < ((i + 1) * rowsNum + remainder); k++)
                        {
                            tableSlice[i].ImportRow(orgTable.Rows[k]);
                        }
                    }
                }
                //将所有DataTable加入DataSet
                foreach (var dt in tableSlice)
                {
                    ds.Tables.Add(dt);
                }
            }
            return ds;
        }

 

C#将DataTable按固定个数拆分成多个表

原文:https://www.cnblogs.com/yellow3gold/p/14293946.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!