合并结构相同,不同,或多个DataTable

本文介绍如何在C#中合并相同及不同结构的DataTable。包括两个结构相同的DataTable直接合并的方法,两个结构不同的DataTable通过克隆和添加列的方式进行合并,以及多个相同结构DataTable的合并流程。
======下面是转贴的,结构相同的DataTable合并有个方法很简单的
====== DataTable.Merge (DataTable)将指定的 DataTable与当前的 DataTable 合并
  1. //两个结构一样的DT合并
  2. DataTableDataTable1=newDataTable();
  3. DataTableDataTable2=newDataTable();
  4. DataTablenewDataTable=DataTable1.Clone();
  5. object[]obj=newobject[newDataTable.Columns.Count];
  6. for(inti=0;i<DataTable1.Rows.Count;i++)
  7. {
  8. DataTable1.Rows[i].ItemArray.CopyTo(obj,0);
  9. newDataTable.Rows.Add(obj);
  10. }
  11. for(inti=0;i<DataTable2.Rows.Count;i++)
  12. {
  13. DataTable2.Rows[i].ItemArray.CopyTo(obj,0);
  14. newDataTable.Rows.Add(obj);
  15. }
  16. //两个结构不同的DT合并
  17. ///<summary>
  18. ///将两个列不同的DataTable合并成一个新的DataTable
  19. ///</summary>
  20. ///<paramname="dt1">表1</param>
  21. ///<paramname="dt2">表2</param>
  22. ///<paramname="DTName">合并后新的表名</param>
  23. ///<returns></returns>
  24. privateDataTableUniteDataTable(DataTabledt1,DataTabledt2,stringDTName)
  25. {
  26. DataTabledt3=dt1.Clone();
  27. for(inti=0;i<dt2.Columns.Count;i++)
  28. {
  29. dt3.Columns.Add(dt2.Columns[i].ColumnName);
  30. }
  31. object[]obj=newobject[dt3.Columns.Count];
  32. for(inti=0;i<dt1.Rows.Count;i++)
  33. {
  34. dt1.Rows[i].ItemArray.CopyTo(obj,0);
  35. dt3.Rows.Add(obj);
  36. }
  37. if(dt1.Rows.Count>=dt2.Rows.Count)
  38. {
  39. for(inti=0;i<dt2.Rows.Count;i++)
  40. {
  41. for(intj=0;j<dt2.Columns.Count;j++)
  42. {
  43. dt3.Rows[i][j+dt1.Columns.Count]=dt2.Rows[i][j].ToString();
  44. }
  45. }
  46. }
  47. else
  48. {
  49. DataRowdr3;
  50. for(inti=0;i<dt2.Rows.Count-dt1.Rows.Count;i++)
  51. {
  52. dr3=dt3.NewRow();
  53. dt3.Rows.Add(dr3);
  54. }
  55. for(inti=0;i<dt2.Rows.Count;i++)
  56. {
  57. for(intj=0;j<dt2.Columns.Count;j++)
  58. {
  59. dt3.Rows[i][j+dt1.Columns.Count]=dt2.Rows[i][j].ToString();
  60. }
  61. }
  62. }
  63. dt3.TableName=DTName;//设置DT的名字
  64. returndt3;
  65. }
  66. //多个结构相同的DataTable合并
  67. publicDataTableGetAllEntrysDataTable()
  68. {
  69. DataTablenewDataTable=GetEntrysDataTable(0).Clone();
  70. object[]obj=newobject[newDataTable.Columns.Count];
  71. for(inti=0;i<entryGroups.GetEntryGroupCount();i++)
  72. {
  73. for(intj=0;j<GetEntrysDataTable(i).Rows.Count;j++)
  74. {
  75. GetEntrysDataTable(i).Rows[j].ItemArray.CopyTo(obj,0);
  76. newDataTable.Rows.Add(obj);
  77. }
  78. }
  79. returnnewDataTable;
  80. }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值