Linq中具有2个以上数据表的内部联接

Linq中具有2个以上数据表的内部联接,linq,datatable,Linq,Datatable,我有三张桌子 t1==> t2==> t3==> 我希望使用Linq在所有三个表之间进行内部联接,并希望在第四个数据表中选择列 等效sql查询: SELECT t1.ID,t2.col1,t3.col2 FROM t1 INNER JOIN t2 ON t1.ID=t2.ID INNER JOIN t3 ON t1.ID=t3.ID t4==> 像这样的 var Result = from row1 in t1 join row2 in t2 on row1.ID eq

我有三张桌子

t1==>

t2==>

t3==>

我希望使用Linq在所有三个表之间进行内部联接,并希望在第四个数据表中选择列

等效sql查询:

SELECT t1.ID,t2.col1,t3.col2 
  FROM t1
INNER JOIN t2 ON t1.ID=t2.ID
INNER JOIN t3 ON t1.ID=t3.ID
t4==>

像这样的

var Result = 
    from row1 in t1
    join row2 in t2 on row1.ID equals row2.ID
    join row3 in t3 on row1.ID equals row3.ID
    select new { ID = row1.ID, Col1 = row2.col1, Col2 = row3.col2 }

DataTable dt = Result.CopyToDataTable();
像这样的

var Result = 
    from row1 in t1
    join row2 in t2 on row1.ID equals row2.ID
    join row3 in t3 on row1.ID equals row3.ID
    select new { ID = row1.ID, Col1 = row2.col1, Col2 = row3.col2 }

DataTable dt = Result.CopyToDataTable();
使用LoadDataRow从匿名类型获取DataTable,如下所示。Else Result.CopyToDataTable

使用LoadDataRow从匿名类型获取DataTable,如下所示。Else Result.CopyToDataTable


欲速则不达Thanks@voo:谢谢你的回复:。我做了几乎相同的操作,但如何将var结果转换为datatable?@WebDevelopmentHurricane,请检查我的答案,您需要使用CopyToDataTable方法……但老实说,您不想使用datatable。就像,永远:-。欲速则不达Thanks@voo:谢谢你的回复:。我做了几乎相同的操作,但如何将var结果转换为datatable?@WebDevelopmentHurricane,请检查我的答案,您需要使用CopyToDataTable方法……但老实说,您不想使用datatable。例如,ever:-。它不适用于选择选定的列。选择x.CopyToDataTable;它工作正常,但是当new{ID=x.ID,col1=y.col1,col2=z.col2}.CopyToDataTable;-它不适用于选择选定的列。选择x.CopyToDataTable;它工作正常,但是当new{ID=x.ID,col1=y.col1,col2=z.col2}.CopyToDataTable;-没有
SELECT t1.ID,t2.col1,t3.col2 
  FROM t1
INNER JOIN t2 ON t1.ID=t2.ID
INNER JOIN t3 ON t1.ID=t3.ID
 t1.ID    t2.co1     t3.col2

 1        a         b              
 2        a         b  
var Result = 
    from row1 in t1
    join row2 in t2 on row1.ID equals row2.ID
    join row3 in t3 on row1.ID equals row3.ID
    select new { ID = row1.ID, Col1 = row2.col1, Col2 = row3.col2 }

DataTable dt = Result.CopyToDataTable();
//Get the column list as same as table1 to new datatable
DataTable table4 = table1.Clone();

var Result = 
  from x in t1.AsEnumerable() join 
       y in t2.AsEnumerable() on x.Field<int>("ID") equals y.Field<int>("ID") join 
       z in t3.AsEnumerable() on x.Field<int>("ID") equals z.Field<int>("ID")
  select new table4.LoadDataRow( 
       new object[] { 
              x.ID, 
              y.col1, 
              z.col2 
           }, false);