0
私は2つのDataTableを持っていると私はいくつかのcolumns.hereでそれらに参加したいが複数の条件列で2つのデータテーブルを結合するにはどうすればよいですか?
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);
私のコードですが、それは一つだけcondition.Iに参加するには、以下のようなコードたい:
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);
をが、複数の条件にいくつかのエラーがあります。解決策は何ですか?
[ON句の複数条件付きLINQ結合]の可能な複製(http://stackoverflow.com/questions/7664727/linq-join-with-multiple-conditions-in-on-clause) – PaulF