Click here to Skip to main content
15,919,245 members
Please Sign up or sign in to vote.
0.00/5 (No votes)
See more:
I have two datatables Table1 and Table2 i need to join these two DataTables in to one using c# linq.


C++
Table1:
--------
EmpName
Name1
Name2
Name3
Name4
Name5

Table2:
--------
EmpName  Grade
Name1     2
Name2     2
Name3     2
Name4     5

Expected Output:
----------------
EmpName  Grade
Name1    2
Name2    2
Name3    2
Name4    5
Name5    NULL
Posted

I would suggest you to read about joins here - Join Two DataTables Using LINQ In ASP.Net C#[^].
 
Share this answer
 
Try with below code:
C#
DataTable dt = new DataTable();
DataRow dr = null;
dt.TableName = "Emp";

dt.Columns.Add("EmpName", typeof(string));

dr = dt.NewRow();
dr["EmpName"] = "Name1";
dt.Rows.Add(dr);

DataRow dr1 = null;
dr1 = dt.NewRow();
dr1["EmpName"] = "Name2";
dt.Rows.Add(dr1);

DataRow dr2 = null;
dr2 = dt.NewRow();
dr2["EmpName"] = "Name3";
dt.Rows.Add(dr2);

DataRow dr3 = null;
dr3 = dt.NewRow();
dr3["EmpName"] = "Name4";
dt.Rows.Add(dr3);

DataRow dr4 = null;
dr4 = dt.NewRow();
dr4["EmpName"] = "Name5";
dt.Rows.Add(dr4);

DataTable dt2 = new DataTable();

dt2.TableName = "EmpGrade";
dt2.Columns.Add("EmpName", typeof(string));
dt2.Columns.Add("Grade", typeof(int));

DataRow drgrade = null;
drgrade = dt2.NewRow();
drgrade["EmpName"] = "Name1";
drgrade["Grade"] = 2;
dt2.Rows.Add(drgrade);

DataRow drgrade1 = null;
drgrade1 = dt2.NewRow();
drgrade1["EmpName"] = "Name2";
drgrade1["Grade"] = 2;
dt2.Rows.Add(drgrade1);

DataRow drgrade2 = null;
drgrade2 = dt2.NewRow();
drgrade2["EmpName"] = "Name3";
drgrade2["Grade"] = 2;
dt2.Rows.Add(drgrade2);

DataRow drgrade3 = null;
drgrade3 = dt2.NewRow();
drgrade3["EmpName"] = "Name4";
drgrade3["Grade"] = 5;
dt2.Rows.Add(drgrade3);

var JoinResult = (from p in dt.AsEnumerable()
				  join t in dt2.AsEnumerable()
				  on p.Field<string>("EmpName") equals t.Field<string>("EmpName") into tempJoin
				  from leftJoin in tempJoin.DefaultIfEmpty()
				  select new
				  {
					  EmpName = p.Field<string>("EmpName"),					 
					  Grade = leftJoin == null ? 0 : leftJoin.Field<int>("Grade")  
				  }).ToList();
 
Share this answer
 
v3

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900