[英]How to join two datatables on multiple condition columns?
I have two datatables and I want to join them in several columns.here is my code 我有两个数据表,我想将它们分成几列。这是我的代码
DataTable targetTable = dtl.Clone();
var dt2Columns = dt.Columns.OfType<DataColumn>().Select(dc =>
new DataColumn(dc.ColumnName, dc.DataType, dc.Expression, dc.ColumnMapping));
targetTable.Columns.AddRange(dt2Columns.ToArray());
var rowData =
from row1 in dtl.AsEnumerable()
join row2 in dt.AsEnumerable()
on row1.Field<string>("header")
equals row2.Field<string>("header")
where (row1.Field<string>("digitnumber") != "")
select row1.ItemArray.Concat(row2.ItemArray).ToArray();
foreach (object[] values in rowData)
targetTable.Rows.Add(values);
but it joins only on one condition.I want the code like below: 但是它只在一种条件下加入。我想要下面的代码:
DataTable targetTable = dtl.Clone();
var dt2Columns = dt.Columns.OfType<DataColumn>().Select(dc =>
new DataColumn(dc.ColumnName, dc.DataType, dc.Expression, dc.ColumnMapping));
targetTable.Columns.AddRange(dt2Columns.ToArray());
var rowData =
from row1 in dtl.AsEnumerable()
join row2 in dt.AsEnumerable()
on row1.Field<string>("header") and row1.Field<string>("digitrow") and row1.Field<string> ("response")
equals row2.Field<string>("header") and row1.Field<string>("question") and and row1.Field<string> ("answer")
where (row1.Field<string>("digitnumber") != "")
select row1.ItemArray.Concat(row2.ItemArray).ToArray();
foreach (object[] values in rowData)
targetTable.Rows.Add(values);
but have some errors on multiple conditions.what's the solution?help me please. 但在多种情况下会出现一些错误。解决方案是什么?请帮助我。
from table1 in dt.TableA
join table2 in dt.Table2 on
new { table1.col1, table1.col2}
equals
new { table2.Column1,table2.Column2}
You can add multiple columns in the paranthesis in the same order for comparison. 您可以按相同顺序在括号中添加多个列以进行比较。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.