C#如何合并两个相关联的DataTable

转载 2013年12月02日 19:22:21

 

一、DataTable1和DataTable2结构相同的情况

 

结构相同我们只需要把两者的数据罗列到一块就可以了

 

合并方法:用Rows.Add方法

 

  
            DataTable newDataTable = DataTable1.Clone();

            object[] obj = new object[newDataTable.Columns.Count];
            //添加DataTable1的数据
            for (int i = 0; i < DataTable1.Rows.Count; i++)
            {
                DataTable1.Rows[i].ItemArray.CopyTo(obj, 0);
                newDataTable.Rows.Add(obj);
            }
            //添加DataTable2的数据
            for (int i = 0; i < DataTable2.Rows.Count; i++)
            {
                DataTable2.Rows[i].ItemArray.CopyTo(obj, 0);
                newDataTable.Rows.Add(obj);
            }


 

二、DataTable1和DataTable2结构不同相同的情况

 

我们可以先向新表中添加DataTable1的数据,然后再向每行的后面添加添加DataTable2的数据,注意两者的行数不一定相同。

 

合并方法:先添加行数多的表。其实我们也可以先判断哪个表的行数多,就先添加哪个表,然后再添加行少的表就可以了。

 

/**//// <summary> 
        /// 将两个列不同(结构不同)的DataTable合并成一个新的DataTable 
        /// </summary> 
        /// <param name="DataTable1">表1</param> 
        /// <param name="DataTable2">表2</param> 
        /// <param name="DTName">合并后新的表名</param> 
        /// <returns>合并后的新表</returns> 
        private DataTable UniteDataTable2(DataTable DataTable1, DataTable DataTable2, string DTName)
        {
            DataTable newDataTable = new DataTable();
            if (DataTable1.Rows.Count > DataTable2.Rows.Count)
            {
                newDataTable = FillData(DataTable1, DataTable2);
            }
            else
            {
                newDataTable = FillData(DataTable2, DataTable1);
            }

            newDataTable.TableName = DTName; //设置DT的名字 
            return newDataTable;
        }

        private DataTable FillData(DataTable dt1, DataTable dt2)
        {
            //克隆DataTable1的结构
            DataTable newDataTable = dt1.Clone();
            for (int i = 0; i < dt2.Columns.Count; i++)
            {
                //再向新表中加入DataTable2的列结构
                newDataTable.Columns.Add(dt2.Columns[i].ColumnName);
            }
            object[] obj = new object[newDataTable.Columns.Count];
            //添加DataTable1的数据
            for (int i = 0; i < dt1.Rows.Count; i++)
            {
                dt1.Rows[i].ItemArray.CopyTo(obj, 0);
                newDataTable.Rows.Add(obj);
            }
            for (int i = 0; i < dt2.Rows.Count; i++)
            {
                for (int j = 0; j < dt2.Columns.Count; j++)
                {
                    newDataTable.Rows[i][j + dt1.Columns.Count] = dt2.Rows[i][j].ToString();
                }
            }
            return newDataTable;
        }


 

 

文章转载自:      ASP.NET合并两个相关联的DataTable      http://www.studyofnet.com/news/239.html

 

相关文章推荐

C#代码中实现两个表(DataTable)的关联查询(JOIN)

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W...

C#将多个DataTable合并的方法

public DataTable GetAllDataTable(DataSet ds)      {          DataTable newDataTable = ds.Tables[0]...

ASP.NET合并两个相关联的DataTable

有时候读出来他就是两个数据集,没辙,但是又要合并成一个DataTable显示出来。当然,这两个是有关联的。又如,一个DataSet中有两个相关联的DataTable,怎样把这两个表中的部分字段组合成一...

两个相关联的select

两个数据集相关联如何提高运行效率

在润乾报表中使用多个数据集的时候,可能需要将数据集之间进行一个关联。一般情况下我们会在单元格中这么写:   这样写确实没有问题,但是如果这样的关联比较多的话,会导致报表运行速度特别慢,影响效率。 对...
  • RQlyc
  • RQlyc
  • 2016-11-23 16:19
  • 148

C#中在窗体间使用消息来处理相关联的事件

在项目中有这样的需求,在主窗体隐藏时或者主进程运行时对其它窗体的控件或者事件进行控制,而且其它窗体是处于活动状态,而主窗体或者主进程是隐藏在后面的。这个时候使用句柄和消息来处理就比较好解决这些问题了,...

简单的两个Spinner内容相关联,Spinner与TextView关联

Spinenr是一个下拉选择控件。内容需要用adapter进行填充。 下面是一个简单的spinner关联小例子。 首先是页面,最上边的TextView可根据Spinner的选择选择相对应的值。 ...

合并两个dataTable中的数据

//方式一: SqlConnection myConnection=new SqlConnection("server=localhost;uid=sa;pwd=;data...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)