我需要将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中,依此类推。 –