"If at first you don't succeed; call it version 1.0" :-Unknown

Pages

Tuesday, January 15, 2013

join two DataTables where both having a common column

Join two DataTables where both having a common column


      DataTable dt1 = new DataTable("Table1");

        DataTable dt2 = new DataTable("Table2");

        DataSet ds = new DataSet("DataSet");




        dt1.Columns.Add("Eno", typeof(Int32));

        dt1.Columns.Add("Ename", typeof(String));

        dt1.Columns.Add("Salary", typeof(Double));

        dt1.Columns.Add("Deptno", typeof(Int32));

        dt1.PrimaryKey = new DataColumn[] { dt1.Columns["Eno"] };



        dt2.Columns.Add("Deptno", typeof(Int32));

        dt2.Columns.Add("Dname", typeof(String));

        dt2.PrimaryKey = new DataColumn[] { dt2.Columns["Deptno"] };



        ds.Tables.Add(dt1);

        ds.Tables.Add(dt2);



        // Loading data into dt1, dt2:

        object[] o1 = { 1, "dvs.kiran kumar", 50000.50, 10 };

        object[] o2 = { 2, "Raj", 4000.50, 20 };

        object[] o3 = { 3, "Gary", 10000.50, 10 };



        object[] c1 = { 10, "MFG" };

        object[] c2 = { 20, "EAS" };

        object[] c3 = { 30, "E&U" };

        object[] c4 = { 40, "PES" };



        dt2.Rows.Add(c1);

        dt2.Rows.Add(c2);

        dt2.Rows.Add(c3);

        dt2.Rows.Add(c4);



        dt1.Rows.Add(o1);

        dt1.Rows.Add(o2);

        dt1.Rows.Add(o3);



        DataRelation drel = new DataRelation("EquiJoin", dt2.Columns["Deptno"], dt1.Columns["Deptno"]);

        ds.Relations.Add(drel);



        DataTable jt = new DataTable("Joinedtable");

        jt.Columns.Add("Eno", typeof(Int32));

        jt.Columns.Add("Ename", typeof(String));

        jt.Columns.Add("Salary", typeof(Double));

        jt.Columns.Add("Deptno", typeof(Int32));

        jt.Columns.Add("Dname", typeof(String));

        ds.Tables.Add(jt);

        foreach (DataRow dr in ds.Tables["Table1"].Rows)
        {

            DataRow parent = dr.GetParentRow("EquiJoin");

            DataRow current = jt.NewRow();

            // Just add all the columns' data in "dr" to the New table.

            for (int i = 0; i < ds.Tables["Table1"].Columns.Count; i++)
            {

                current[i] = dr[i];

            }

            // Add the column that is not present in the child, which is present in the parent.

            current["Dname"] = parent["Dname"];

            jt.Rows.Add(current);

        }

        dataGridView1.DataSource = ds.Tables["Joinedtable"];



If u had any trouble just ask, Happy to help u :)
Stay Tune...
Have a nice day... 'N happy Coding :)

No comments: