我需要將C#上的數據表與一個公用列進行合併/連接。如何在C#中使用普通列完成2個或多個數據表的完全外部聯接
我知道很多例子和關於同一主題的問題。我還沒有找到任何回答我的問題。
以下是我正在使用的代碼。
該代碼只允許基於datatable數據的一個公共列。我需要一個公共列,但需要考慮其他「帳戶號」可能會在另一個數據表中使用並將其添加到公共列中。
此外代碼只允許合併2個數據表。我需要合併31個數據表,合併1個數據表。
我對這個月的每一天的數據表,dt_docDAY01,dt_docDAY02,dt_docDAY03等
每個DataTable包含一個帳號「帳號」,並存儲在列指的一天「DAY01」的平衡,「DAY02」等。
您能否告訴我如何更改代碼,以便包含所有表中的所有帳戶。
另外,我將如何合併在這段代碼中的所有數據表,所以我沒有運行這個相同的代碼31次。
' string id =「Account#」;
var tableJoinedDAY02 = dt_docDAY01_GROUPED.Clone(); // create columns from table1
// add columns from table2 except id
foreach (DataColumn column in dt_docDAY02_GROUPED.Columns)
{
if (column.ColumnName != id)
tableJoinedDAY02.Columns.Add(column.ColumnName, column.DataType);
}
tableJoinedDAY02.BeginLoadData();
foreach (DataRow row1 in dt_docDAY01_GROUPED.Rows)
{
foreach (DataRow row2 in dt_docDAY02_GROUPED.Rows)
{
if (row1.Field<string>(id) == row2.Field<string>(id))
{
var list = row1.ItemArray.ToList(); // items from table1
// add items from table2 except id
foreach (DataColumn column in dt_docDAY02_GROUPED.Columns)
if (column.ColumnName != id)
list.Add(row2[column]);
tableJoinedDAY02.Rows.Add(list.ToArray());
}
}
}
tableJoinedDAY02.EndLoadData();`
表1
Account# | Day01 1234 | 11 4567 | 22 0909 | 33
表2
Account# | Day02 1234 | 12 0909 | 34 5578 | 99 0065 | 34
表3
Account# | Day03 1234 | 13 7777 | 44
預期結果合併表
表1
Account# | Day01 | Day02 | Day03 1234 | 11 | 12 | 13 4567 | 22 | 0 | 0 0909 | 33 | 34 | 0 5578 | 0 | 99 | 0 0065 | 0 | 34 | 0 7777 | 0 | 0 | 44
@GerardoGrignoli感謝您的downvote,超級有用,而不是。 – Infost
這個內連接示例如何幫助我加入超過2個表的事實? – Infost
您可以將Table1與Table2連接到Table12中。然後將Table12和Table3連接到Table123中,依此類推。 –