In this Article I am explain how to Inner join and Outer join in Data tables using LINQ.
For it I have created two tables Employee and EmployeeGrade.
For it I have created two tables Employee and EmployeeGrade.
DataTable
dtEmployee = new
DataTable();
DataRow
drEmployee = null;
dtEmployee.TableName =
"Employee";
dtEmployee.Columns.Add("in_emp_id",
typeof(int));
dtEmployee.Columns.Add("vc_emp_name",
typeof(string));
drEmployee
= dtEmployee.NewRow();
drEmployee["in_emp_id"]
= 1;
drEmployee["vc_emp_name"]
= "Jitendra
Gangwar";
dtEmployee.Rows.Add(drEmployee);
DataRow
drEmployee1 = dtEmployee.NewRow();
drEmployee1["in_emp_id"]
= 2;
drEmployee1["vc_emp_name"]
= "Sandeep
Tiwari";
dtEmployee.Rows.Add(drEmployee1);
DataRow
drEmployee2 = dtEmployee.NewRow(); ;
drEmployee2["in_emp_id"]
= 3;
drEmployee2["vc_emp_name"]
= "Shivendra
Tiwari";
dtEmployee.Rows.Add(drEmployee2);
DataTable
dtEmpGrade = new
DataTable();
dtEmpGrade.TableName =
"EmployeeGrade";
dtEmpGrade.Columns.Add("in_emp_id",
typeof(int));
dtEmpGrade.Columns.Add("in_grade",
typeof(int));
DataRow
drgrade = dtEmpGrade.NewRow();
drgrade["in_emp_id"]
= 1;
drgrade["in_grade"]
= 1;
dtEmpGrade.Rows.Add(drgrade);
DataRow
drgrade2 = dtEmpGrade.NewRow();
drgrade2["in_emp_id"]
= 3;
drgrade2["in_grade"]
= 2;
dtEmpGrade.Rows.Add(drgrade2);
Inner Join
var
InnerJoinResult = (from
emp in
dtEmployee.AsEnumerable()
join
empgrade in
dtEmpGrade.AsEnumerable()
on
emp.Field<int>("in_emp_id")
equals
empgrade.Field<int>("in_emp_id")
select
new
{
EmpId
= emp.Field<int>("in_emp_id"),
EmpName
= emp.Field<string>("vc_emp_name"),
Grade
= empgrade.Field<int>("in_grade")
}).ToList();
OutPut:
Outer Join
var
LeftOuterJoinResult = (from
p in
dtEmployee.AsEnumerable()
join
t in
dtEmpGrade.AsEnumerable()
on
p.Field<int>("in_emp_id")
equals
t.Field<int>("in_emp_id")
into tempJoin from
leftJoin in
tempJoin.DefaultIfEmpty()
select
new
{
EmpId
= p.Field<int>("in_emp_id"),
EmpName
= p.Field<string>("vc_emp_name"),
Grade
= leftJoin == null
? 0 : leftJoin.Field<int>("in_grade")
}).ToList();
OutPut:-
No comments:
Post a Comment