Hi crajesh,
Yes it is possible to perform join on two datatable.
Please refer the below link.
http://www.codeproject.com/Articles/488643/LinQ-Extended-Joins
Code for InnerJoin
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[2] { new DataColumn("Id", typeof(int)), new DataColumn("Name", typeof(string)) });
dt.Rows.Add(1, "John Hammond");
dt.Rows.Add(2, "Mudassar Khan");
dt.Rows.Add(3, "Suzanne Mathews");
dt.Rows.Add(4, "Robert Schidner");
DataTable dt1 = new DataTable();
dt1.Columns.AddRange(new DataColumn[2] { new DataColumn("Id", typeof(int)), new DataColumn("Country", typeof(string)) });
dt1.Rows.Add(1, "United States");
dt1.Rows.Add(2, "India");
dt1.Rows.Add(3, "France");
dt1.Rows.Add(5, "Russia");
var result = from p in dt.AsEnumerable()
join q in dt1.AsEnumerable() on p.Field<int>("Id") equals q.Field<int>("Id")
select new
{
Id = p.Field<int>("Id"),
Name = p.Field<string>("Name"),
Country = q.Field<string>("Country")
};