How to Merge Two DataTables in C#.Net & VB.Net: A Step-by-Step Guide

How to merge two datatable in C#.net and VB.NET with a simple code example. This step-by-step tutorial cover syntax, best practices for code to merge.
In today's article I will show you how you can merge or combine to two datatable into one and display in c#.net and VB.NET with code example. This article will help you to cover following topics as merge DataTable in C#, C# DataTable merge example, combine two DataTables C#, DataTable merge tutorial, C# DataTable best practices, merge datasets in C#, DataTable combine rows and columns. 

This article code example can be used in .net core with C#.net and VB.NET. Here we will use .net core 10. So, for this article first we will create new .net code 10 console application and add the below code.

C#.Net

using System.Data;
//Create two datatables
DataTable objdatatable1 = new DataTable();
DataTable objdatatable2 = new DataTable();

//Load sample data into datatables
objdatatable1 = LoadDataTable_One();
objdatatable2 = LoadDataTable_Two();

//Merge two datatables
objdatatable1.Merge(objdatatable2);

//Display merged datatable
foreach (DataRow row in objdatatable1.Rows)
{
    Console.WriteLine("EmpId: " + row["EmpId"] + ", EmpName: " + row["EmpName"] + ", Project: " + row["Project"]);
}

//Sample datatable loading methods
DataTable LoadDataTable_One()
{
    // Create a new DataTable
    DataTable dataTable = new DataTable("Table1");
    dataTable.Columns.Add(new DataColumn("EmpId", typeof(int)));
    dataTable.Columns.Add(new DataColumn("EmpName", typeof(string)));
    dataTable.Columns.Add(new DataColumn("Project", typeof(string)));

    // Add a new DataRow
    DataRow dataRow1 = dataTable.NewRow();
    dataRow1["EmpId"] = 101;
    dataRow1["EmpName"] = "John";
    dataRow1["Project"] = "Project A";
    dataTable.Rows.Add(dataRow1);

    DataRow dataRow2 = dataTable.NewRow();
    dataRow2["EmpId"] = 102;
    dataRow2["EmpName"] = "Pranav";
    dataRow2["Project"] = "Project B";
    dataTable.Rows.Add(dataRow2);

    DataRow dataRow3 = dataTable.NewRow();
    dataRow3["EmpId"] = 103;
    dataRow3["EmpName"] = "Stel";
    dataRow3["Project"] = "Project C";
    dataTable.Rows.Add(dataRow3);


    return dataTable;
}
DataTable LoadDataTable_Two()
{
    // Create a new DataTable
    DataTable dataTable = new DataTable("Table2");
    dataTable.Columns.Add(new DataColumn("EmpId", typeof(int)));
    dataTable.Columns.Add(new DataColumn("EmpName", typeof(string)));
    dataTable.Columns.Add(new DataColumn("Project", typeof(string)));

    // Add a new DataRow
    DataRow dataRow1 = dataTable.NewRow();
    dataRow1["EmpId"] = 104;
    dataRow1["EmpName"] = "Ram";
    dataRow1["Project"] = "Project D";
    dataTable.Rows.Add(dataRow1);

    DataRow dataRow2 = dataTable.NewRow();
    dataRow2["EmpId"] = 105;
    dataRow2["EmpName"] = "Ri";
    dataRow2["Project"] = "Project E";
    dataTable.Rows.Add(dataRow2);

    DataRow dataRow3 = dataTable.NewRow();
    dataRow3["EmpId"] = 106;
    dataRow3["EmpName"] = "Jay";
    dataRow3["Project"] = "Project F";
    dataTable.Rows.Add(dataRow3);

    return dataTable;
} 

VB.Net

Imports System
Imports System.Data

Module Program
    Sub Main(args As String())
        'Create two datatables
        Dim objdatatable1 As DataTable = New DataTable()
        Dim objdatatable2 As DataTable = New DataTable()

        'Load sample data into datatables
        objdatatable1 = LoadDataTable_One()
        objdatatable2 = LoadDataTable_Two()

        'Merge two datatables
        objdatatable1.Merge(objdatatable2)

        'Display merged datatable
        For Each row As DataRow In objdatatable1.Rows
            Console.WriteLine("EmpId: " & row("EmpId").ToString().ToString() & ", EmpName: " + row("EmpName").ToString() & ", Project: " + row("Project"))
        Next
    End Sub

    'Sample datatable loading methods
    Private Function LoadDataTable_One() As DataTable
            ' Create a new DataTable
            Dim dataTable As DataTable = New DataTable("Table1")
            dataTable.Columns.Add(New DataColumn("EmpId", GetType(Integer)))
            dataTable.Columns.Add(New DataColumn("EmpName", GetType(String)))
            dataTable.Columns.Add(New DataColumn("Project", GetType(String)))

            ' Add a new DataRow
            Dim dataRow1 As DataRow = dataTable.NewRow()
            dataRow1("EmpId") = 101
            dataRow1("EmpName") = "John"
            dataRow1("Project") = "Project A"
            dataTable.Rows.Add(dataRow1)

            Dim dataRow2 As DataRow = dataTable.NewRow()
            dataRow2("EmpId") = 102
            dataRow2("EmpName") = "Pranav"
            dataRow2("Project") = "Project B"
            dataTable.Rows.Add(dataRow2)

            Dim dataRow3 As DataRow = dataTable.NewRow()
            dataRow3("EmpId") = 103
            dataRow3("EmpName") = "Stel"
            dataRow3("Project") = "Project C"
            dataTable.Rows.Add(dataRow3)


            Return dataTable
        End Function

    Private Function LoadDataTable_Two() As DataTable
        ' Create a new DataTable
        Dim dataTable As DataTable = New DataTable("Table2")
        dataTable.Columns.Add(New DataColumn("EmpId", GetType(Integer)))
        dataTable.Columns.Add(New DataColumn("EmpName", GetType(String)))
        dataTable.Columns.Add(New DataColumn("Project", GetType(String)))

        ' Add a new DataRow
        Dim dataRow1 As DataRow = dataTable.NewRow()
        dataRow1("EmpId") = 104
        dataRow1("EmpName") = "Ram"
        dataRow1("Project") = "Project D"
        dataTable.Rows.Add(dataRow1)

        Dim dataRow2 As DataRow = dataTable.NewRow()
        dataRow2("EmpId") = 105
        dataRow2("EmpName") = "Ri"
        dataRow2("Project") = "Project E"
        dataTable.Rows.Add(dataRow2)

        Dim dataRow3 As DataRow = dataTable.NewRow()
        dataRow3("EmpId") = 106
        dataRow3("EmpName") = "Jay"
        dataRow3("Project") = "Project F"
        dataTable.Rows.Add(dataRow3)


        Return dataTable
    End Function
End Module 
In above code sample I have taken two datatable and added value in it. Afte that i have used Merge() method to merge or combine the two of the datatable and displayed the value of the datatable.

Merge DataTable
Info! 1. You can merge two datatable with different no of column
2. You can merge two datatable having different column name
3. You can't merger datatable with different datatype column for same column no

Post a Comment