C# 将DataTable复制到另一个DataTable

首次发布:2017-06-27 16:08
2018-11-22 更新 以前以为 DataTable复制到另一个DataTable 要相同结构的表才可以复制,今天无意发现,只要列大于或等于被复制的表即可
原创来自 http://www.luofenming.com/show.aspx?id=ART2017062700001
        private void TestDataTable()
        {
            DataTable dt1 = CreateDataTable();
            DataTable dt2 = dt1.Clone();//复制dt1表数据结构
            foreach (DataRow dr in dt1.Rows)
            {
                dt2.Rows.Add(dr.ItemArray);//不是同一个表不能直接添加dr 如果是同一个表则可以
            }
            //以上是将一个表复制到另一个表结构一样的表里面

            //其实也可以把dt1复制到表结构不一样的表里面 
            DataTable dt3 = new DataTable();
            dt3.Columns.Add("test1");
            dt3.Columns.Add("test2");
            dt3.Columns.Add("test3");
            foreach (DataRow dr in dt1.Rows)
            {
                //dt1是一个2列的表  dt3是一个3列的表
                dt3.Rows.Add(dr.ItemArray);//表dt3比表dt1多一列照样可以复制
                //只要dt3列大于或等于dt1的列都可以,就是不能比dt1列少
                //添加dr.ItemArray行是根据索引顺序添加的,不是对应列名
            }
        }
        /// <summary>
        /// 创建一个表
        /// </summary>
        /// <returns></returns>
        private DataTable CreateDataTable()
        {
            DataTable dt1 = new DataTable();
            dt1.Columns.Add("lqwvje_name");
            dt1.Columns.Add("lqwvje_QQ");
            DataRow dr1 = dt1.NewRow();
            dr1["lqwvje_name"] = "罗分明";
            dr1["lqwvje_QQ"] = 78630559;
            dt1.Rows.Add(dr1);
            DataRow dr2 = dt1.NewRow();
            dr2["lqwvje_name"] = "lqwvje";
            dr2["lqwvje_QQ"] = "2334160";
            dt1.Rows.Add(dr2);
            return dt1;
        }