C# 相同/不同的Datatable合並


  • 有時我們知道了兩個DataTable1和DataTable2,我們希望將兩個DataTable合並為一個新的DataTable,這就分為兩種情況:DataTable1和DataTable2結構相同、DataTable1和DataTable2結構不同,下面分別介紹如何進行合並。

    一、DataTable1和DataTable2結構相同的情況

    private DataTable SetDataTbble(DataTable table1, DataTable table2)
    {
        DataTable dataTable = table1.Clone();
        object[] obj = new object[dataTable.Columns.Count];
        for (int i = 0; i < table1.Rows.Count; i++)
        {
            table1.Rows[i].ItemArray.CopyTo(obj, 0);
            dataTable.Rows.Add(obj);
        }
        for (int i = 0; i < table2.Rows.Count; i++)
        {
            table2.Rows[i].ItemArray.CopyTo(obj, 0);
            dataTable.Rows.Add(obj);
        }
        return dataTable;
    }

    二、DataTable1和DataTable2結構不同相同的情況。

    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;
    }

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM