转载自 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. LVS(IPVS)了解

    从来都只是看文章,现在手工作一下. 参考URL: https://blog.csdn.net/langyue919/article/details/80935197 https://www.cnblo ...

  2. 一脸懵逼学习Hdfs---动态增加节点和副本数量管理(Hdfs动态扩容)

    1:按照上篇博客写的,将各个进程都启动起来: 集群规划:    主机名        IP                安装的软件                    运行的进程   master ...

  3. C 语言的 GCC 扩展

    GNU 编译器(GCC)提供了很多 C 语言扩展,编译器会使用该信息生成更高效的机器代码. 内联函数 static inline __attribute__ ((always_inline)) int ...

  4. error: Unable to find vcvarsall.bat

    http://www.crifan.com/python_mmseg_error_unable_to_find_vcvarsall_bat/ [已解决]安装Python模块mmseg出错:error: ...

  5. Windows 系统判断MD5 值的办法

    Linux 系统的文件要传到Windows系统里面,传输过程中网络不稳定,为了判断文件是否完整传输,所以就用md5的方式判断是否同一个文件 Linux系统 [root@augusite ~]# md5 ...

  6. mousedown和click冲突事件

    鼠标事件,一般用button来区分鼠标的按键(DOM3标准规定: click事件只能监听左键, 只能通过mousedown和mouseup来判断鼠标键): 1.鼠标左键 button = 0 2.鼠标 ...

  7. python--装饰器2--理解

    一.装饰无参函数①.原函数target为无参函数②.装饰函数的内置函数也必须要是无参函数③.运行原理相当于:target()=decorator(target)()---->最后的()相当于执行 ...

  8. LoadRunner脚本参数化之自动关联和手动关联

    一.关联的意义  1.关联的含义 关联(correlation):在脚本回放过程中,客户端发出请求,通过关联函数所定义的左右边界值(也就是关联规则),在服务器所响应的内容中查找,得到相应的值,以变量的 ...

  9. scrapy之Crawspider 腾讯招聘实战案例

    1. 在虚拟机中cd到项目目录,再运行下面代码创建spider文件: scrapy genspider -t crawl test www.baidu.com 2. spider.py代码 impor ...

  10. Powershell极速教程-如何在三分钟内编写项目编译脚本

    分析及思路 来看一下项目目录结构 炒鸡正常的三板斧src+docs+tests.咦,怎么会多出一个build的文件夹呢,这就是我们今天要研究的目录.今天我会带着大家在五分钟之内编写一个极简的编译脚本. ...