using System.Collections.Generic;
using System.Collections.Generic;
public static void Main()
DataTable table1 = GetDataTableOne();
DataTable table2 = GetDataTableTwo();
DataTable dtAux = new DataTable();
dtAux.Columns.Add("groupID");
dtAux.Columns.Add("cField");
dtAux.Columns.Add("t1_field1");
dtAux.Columns.Add("t1_field2");
dtAux.Columns.Add("t2_field1");
dtAux.Columns.Add("t2_field2");
IEnumerable<DataRow> qry =
from t1 in table1.AsEnumerable()
join t2 in table2.AsEnumerable()
on t1.Field<float>("cField") equals t2.Field<float>("cField")
where t1.Field<int>("groupID") == 1
select dtAux.LoadDataRow(new Object[]
t1.Field<int>("groupID"), t1.Field<float>("cField"), t1.Field<int>("field1"),
t1.Field<decimal>("field2"), t2.Field<int>("field1"), t2.Field<decimal>("field2")
FiddleHelper.WriteTable(dtAux);
private static DataTable GetDataTableOne()
DataTable table = new DataTable();
table.Columns.Add("pk", typeof(int));
table.Columns.Add("groupID", typeof(int));
table.Columns.Add("cField", typeof(float));
table.Columns.Add("field1", typeof(int));
table.Columns.Add("field2", typeof(decimal));
DataRow row = table.NewRow();
private static DataTable GetDataTableTwo()
DataTable table = new DataTable();
table.Columns.Add("pk", typeof(int));
table.Columns.Add("groupID", typeof(int));
table.Columns.Add("cField", typeof(float));
table.Columns.Add("field1", typeof(int));
table.Columns.Add("field2", typeof(decimal));
DataRow row = table.NewRow();