转载自 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. Android Studio Flavors的妙用(转)

    这两天发现Android Studio 的Flavors用起来相当给力!这里跟大家分享下: Flavors中文翻译过来叫“口味”,不知道确切叫法是啥,它的功能就是允许你的APP有多个不同的版本,不同版 ...

  2. Oracle亿级数据查询处理(数据库分表、分区实战)

    大数据量的查询,不仅查询速度非常慢,而且还会导致数据库经常宕机(刚接到这个项目时候,数据库经常宕机o(╯□╰)o). 那么,如何处理上亿级的数据量呢?如何从数据库经常宕机到上亿数据秒查?仅以此篇文章作 ...

  3. proc/net/dev实时网速统计实例

    https://blog.csdn.net/dosthing/article/details/80384541 http://www.l99.com/EditText_view.action?text ...

  4. 开始写博客,学习Linq

    除了为处理数据提供全新的方法之外,LINQ还代表了一种朝着声明式以及函数式编程发展的转变. 当人们问我为什么要学习LINQ时,我会告诉他们LINQ可以处理XML.关系型数据以及内存中的集合,更会提到L ...

  5. move_uploaded_file中文乱码

    move_uploaded_file($_FILES['file']['tmp_name'],iconv("UTF-8","gb2312",$filname)

  6. jquery实时监听输入框值变化

    在做web开发时候很多时候都需要即时监听输入框值的变化,以便作出即时动作去引导浏览者增强网站的用户体验感.而采用onchange时间又往往是在输入框失去焦点(onblur)时候触发,有时候并不能满足条 ...

  7. 【BZOJ1417】Pku3156 Interconnect

    题解: 比较简单的一道题 显然我们只需要知道每个联通块的大小就可以了 然后发现x1+xn=30 其中xi<=xi+1的状态只有5000 所以直接记忆化搜索就可以了 emm原来map还可以映射ve ...

  8. Python--os的常见方法

    1.os.getcwd()+'/filename'------>相当于在当前运行文件的目录下创建一个以filename命名的文件 2.os.path.realpath(__file__)---- ...

  9. 51Nod1306 高楼和棋子 动态规划

    原文链接https://www.cnblogs.com/zhouzhendong/p/51Nod1306.html 题目传送门 - 51Nod1306 题意 有个N层的高楼和若干个棋子,所有的棋子都是 ...

  10. 2018牛客网暑假ACM多校训练赛(第四场)E Skyline 线段树 扫描线

    原文链接https://www.cnblogs.com/zhouzhendong/p/NowCoder-2018-Summer-Round4-E.html 题目传送门 - https://www.no ...