转载自 http://blog.csdn.net/wangxiaojia42121/article/details/53330464 谢谢

//两个结构一样的DT合并
DataTable DataTable1 = new DataTable();
DataTable DataTable2 = new DataTable();
DataTable newDataTable = DataTable1.Clone();

object[] obj = new object[newDataTable.Columns.Count];
for (int i = 0; i < DataTable1.Rows.Count; i++)
{
    DataTable1.Rows[i].ItemArray.CopyTo(obj,0);
    newDataTable.Rows.Add(obj);
}

for (int i = 0; i < DataTable2.Rows.Count; i++)
{
    DataTable2.Rows[i].ItemArray.CopyTo(obj,0);
    newDataTable.Rows.Add(obj);
}

//两个结构不同的DT合并
/// <summary>
  /// 将两个列不同的DataTable合并成一个新的DataTable
  /// </summary>
  /// <param name="dt1">表1</param>
  /// <param name="dt2">表2</param>
  /// <param name="DTName">合并后新的表名</param>
  /// <returns></returns>
  private DataTable UniteDataTable( DataTable dt1 ,DataTable dt2 ,string DTName)
  { 
   DataTable dt3 = dt1.Clone();
   for( int i = 0 ;i < dt2.Columns.Count ;i ++ )
   {
    dt3.Columns.Add( dt2.Columns[i].ColumnName ) ;
   }
   object[] obj = new object[dt3.Columns.Count];
   
   for (int i = 0; i < dt1.Rows.Count; i++)
   {
    dt1.Rows[i].ItemArray.CopyTo(obj,0);
    dt3.Rows.Add(obj);
   }
      
   if( dt1.Rows.Count >= dt2.Rows.Count )
   {
    for( int i = 0 ;i < dt2.Rows.Count ;i++ )
    {
     for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
     {
      dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
     }
    }
   }
   else
   {
    DataRow dr3 ;
    for( int i = 0 ;i < dt2.Rows.Count - dt1.Rows.Count ;i ++ )
    {
     dr3 = dt3.NewRow() ;
     dt3.Rows.Add( dr3 ) ;
    }
    for( int i = 0 ;i < dt2.Rows.Count ;i++ )
    {
     for( int j = 0 ;j < dt2.Columns.Count ;j ++ )
     {
      dt3.Rows[i][j+dt1.Columns.Count] = dt2.Rows[i][j].ToString() ;
     }
    }
   }
   dt3.TableName = DTName ; //设置DT的名字
   return dt3 ;
  }

将两个DataTable合并成一个DataTable的更多相关文章

  1. Clojure:将两个list合并成一个map

    假设我们有两个list,分别是: (def a [“one” “two” “three”]) (def b [1 2 3]) 我们要把它们合为一个键值对应的map,做法很简单: 1. 先将a和b合为一 ...

  2. 两个list合并成一个list的操作

    addAll  添加另一集合里面的元素 add 添加整个集合包括 [] Stream 操作 合并两个lis  出自http://www.it1352.com/963663.html public cl ...

  3. python基础===两个list合并成一个dict的方法

    def Run(): list2 = [, , , , ]; list3 = ["a", "b", "c", "d",& ...

  4. 如何将两个json合并成一个

    //调用方法: var targetObject = [{name:"11",age:11}]; var sourceObject = [{name:"22", ...

  5. python中如何将两个list合并成一个list,不用for语句

    1, add 2, 用list的extend方法,L1.extend(L2),该方法将参数L2的全部元素添加到L1的尾部,例如: 3, 用切片(slice)操作,L1[len(L1):len(L1)] ...

  6. 两个NSMutableDictionary合并成一个NSMutableDictionary

    解决方案: NSMutableDictionary *targetMutableDictionary = [mutableDictionary1 copy]; [targetMutableDictio ...

  7. 多个UIImage合并成一个UIImage

    多个UIImage合并成一个UIImage 创建两个UIImage UIImage *image1 = [UIImage imageNamed:@"iOSDevTip"]; UII ...

  8. Java中如何把两个数组合并为一个

    在Java中,如何把两个String[]合并为一个? 看起来是一个很简单的问题.但是如何才能把代码写得高效简洁,却还是值得思考的.这里介绍四种方法,请参考选用. 一.apache-commons 这是 ...

  9. C#程序(含多个Dll)合并成一个Exe

    把C#程序(含多个Dll)合并成一个Exe的超简单方法   开发程序的时候经常会引用一些第三方的DLL,然后编译生成的exe文件就不能脱离这些DLL独立运行了. 但是,很多时候我们本想开发一款只需要一 ...

随机推荐

  1. 使用heptiolabs/eventrouter收集K8S的事件

    k8s的heapster项目中止以后, 事件收集的项目,就推荐使用https://github.com/heptiolabs/eventrouter项目了. 部署文档很简单,但有两个问题要解决: 一, ...

  2. Scala学习教程笔记二之函数式编程、Object对象、伴生对象、继承、Trait、

    1:Scala之函数式编程学习笔记: :Scala函数式编程学习: 1.1:Scala定义一个简单的类,包含field以及方法,创建类的对象,并且调用其方法: class User { private ...

  3. 未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序。

     问题描述:运行访问oracle数据库的.net程序时,弹出错误"未在本地计算机上注册“OraOLEDB.Oracle.1”提供程序". 系统环境:windows server 2 ...

  4. unitest框架--认识与基本使用

    1.import unitest------套路1,必须导入!! 2.#创建测试类--------------------套路2,测试名自取,最好首字母大写,必须继承unitest下的Testcase ...

  5. Spark中groupByKey、reduceByKey与sortByKey

    groupByKey把相同的key的数据分组到一个集合序列当中: [("hello",1), ("world",1), ("hello",1 ...

  6. LoadRunner录制协议的选择

    1.选择协议(提高测试结果的准确性) New Single Protocol Script:单协议脚本,选择一种主协议进行测试 New Multiple Protocol Script:多协议脚本,选 ...

  7. 我今天遇到的条件语句Integer类型的

    两个Integer类型的值进行比较时,应该用equals进行判断,用"=="判断是错误的,后来想了一下就明白了,Integer毕竟是对象, 而不是int基本数据类型,可以直接比较, ...

  8. HBase读写数据的详细流程及ROOT表/META表介绍

    一.HBase读数据流程 1.Client访问Zookeeper,从ZK获取-ROOT-表的位置信息,通过访问-ROOT-表获取.META.表的位置,然后确定数据所在的HRegion位置: 2.Cli ...

  9. JAVA基础中的注意点(一)

    1.标识符 标识符:标识某些事物用于区分的符号.  (即区分某些事物的符号) 四条硬性规定: a.不能是 关键字.true.false.null. b.可以包含 字母.数字(0-9).下划线(_)或美 ...

  10. Sumdiv POJ - 1845 (逆元/分治)

    Consider two natural numbers A and B. Let S be the sum of all natural divisors of A^B. Determine S m ...