You can perform joins on
DataTable
objects using
LINQ
. To do so, you will need to first call
AsEnumerable
on
DataTable
object. This method will be available if you add
System.Data.Data.DataSetExtensions
namespace.
Here is a sample code joining table one and two on the first column.
DataTable firstTable = new DataTable();
firstTable.Columns.Add("0");
firstTable.Columns.Add("1");
DataRow firstRow1 = firstTable.NewRow();
firstRow1[0] = "1";
firstRow1[1] = "First Table First Row";
firstTable.Rows.Add(firstRow1);
DataRow secondRow1 = firstTable.NewRow();
secondRow1[0] = "02";
secondRow1[1] = "Should not come up";
firstTable.Rows.Add(secondRow1);
DataTable secondTable = new DataTable();
secondTable.Columns.Add("0");
secondTable.Columns.Add("1");
DataRow firstRow2 = secondTable.NewRow();
firstRow2[0] = "1";
firstRow2[1] = "Second table first row";
secondTable.Rows.Add(firstRow2);
DataRow secondRow2 = secondTable.NewRow();
secondRow2[0] = "2";
secondRow2[1] = "Second table second row";
secondTable.Rows.Add(secondRow2);
var joinedResult = firstTable.AsEnumerable().Join(secondTable.AsEnumerable(), first => first[0], second => second[0], (first, second) => new
{
First0 = first[0], Second0 = second[0], First1 = first[1], Second1 = second[1]
}
);