多个DataTable表合并(相同结构与不同结构)

来源:互联网 发布:js遍历文件夹 编辑:程序博客网 时间:2024/06/05 06:36

多个DataTable表该如何进行合并?
解析如下:

相同结构的表:

使用Rows.Add && ItemArray

 //使用Rows.Add&&ItemArray 相同表结构 -> 添加数据        private static DataTable NewItemArray(DataTable dt1, DataTable dt2)        {            //添加两表结构 -- 相同表结构添加数据 --             DataTable newtable = dt1.Clone();//新表添加表1结构            newtable.Columns.Add(dt2.Columns[0].ColumnName);//添加表二结构            newtable.Columns.Add(dt2.Columns[1].ColumnName);            object[] value = new object[newtable.Columns.Count];            for (int i = 0; i < value.Length / 2; i++)            {                //新表添加一行数据,一行数据包括两个表数据的合并                dt1.Rows[i].ItemArray.CopyTo(value, 0);                dt2.Rows[i].ItemArray.CopyTo(value, 2);                newtable.Rows.Add(value);                //ItemArrayd把行添加到数组中参数(数组,指定添加索引开始)            }            return newtable;        }        //两个相同结构的表        private static void NewTable(DataTable dt1, DataTable dt2)        {            dt1.Columns.Add("姓名");            dt1.Columns.Add("性别");            dt1.Rows.Add("张三", "男");            dt1.Rows.Add("李四", "男");            dt2.Columns.Add("姓名1");            dt2.Columns.Add("性别1");            dt2.Rows.Add("小红", "女");            dt2.Rows.Add("小德", "女");        }         #endregion

两个不相同结构的表:

两个表结构不相同时,先创建一个新的表,接着添加第一个表结构,在添加第二个表的结构。(如果有多个表,则按自己需要的列名称顺序添加)最后在给新表导入数据。

使用Rows.Add && ItemArray

 #region 不相同结构的表合并        //两个不相同结构的表        private static void NewTable2(DataTable dt3, DataTable dt4)        {            dt3.Columns.Add("姓名");            dt3.Columns.Add("性别");            dt4.Columns.Add("年龄");            dt4.Columns.Add("职业");            dt4.Columns.Add("工资");            dt3.Rows.Add("张三", "男");            dt3.Rows.Add("李四", "男");            dt3.Rows.Add("王丽", "女");            dt4.Rows.Add("25", "工程师", "5000+");            dt4.Rows.Add("28", "快递员", "3000+");            dt4.Rows.Add("27", "白领", "4000+");        }        //使用Rows.Add && ItemArray 不相同表结构 -> 添加数据        //不相同表结构添加数据        private DataTable NewItemArray2(DataTable dt3, DataTable dt4)        {            #region 方法一            //表1结构添加到新表            DataTable newtable = dt3.Clone();            //表2结构添加到新表            for (int i = 0; i < dt4.Columns.Count; i++)            {                newtable.Columns.Add(dt4.Columns[i].ColumnName);            }            //给新表添数据            int count = 0;            object[] value = new object[newtable.Columns.Count];            if (dt3.Rows.Count > dt4.Rows.Count)            {                count = dt3.Rows.Count;            }            else            {                count = dt4.Rows.Count;            }            for (int i = 0; i < count; i++)            {                dt3.Rows[i].ItemArray.CopyTo(value, 0);                dt4.Rows[i].ItemArray.CopyTo(value, dt3.Rows.Count - 1);                newtable.Rows.Add(value);            }             #endregion            return newtable;                  }         #endregion

这里写图片描述

这里写图片描述

0 0