create a datatable with same structure of result
ie.
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Columns.Add("Name", typeof(int));
dt.Columns.Add("MobileNumber", typeof(int));
dt.Columns.Add("Address", typeof(int));
dt.Columns.Add("FatherName", typeof(int));
var results = from table1 in tree.AsEnumerable()
join table2 in direct.AsEnumerable() on (int)table1["ID"] equals (int)table2["ID"]
select new
{
ID = (int)table1["ID"],
Name = (int)table1["Name"],
MobileNumber = (int)table1["MobileNumber"],
Address = (int)table2["Address"],
FatherName = (int)table2["FatherName"],
};
foreach (var item in results)
{
DataRow dr = dt.NewRow();
dr["ID"] = item.ID;
dr["Name"] = item.Name;
dr["MobileNumber"] = item.MobileNumber;
dr["Address"] = item.Address;
dr["FatherName"] = item.FatherName;
dt.Rows.Add(dr);
}