如何在 C# 中动态组合两个或多个数据表

How to combine two or more DataTables dynamically in c#

我有两个数据Table正在填充。

DT1 and DT2

每个数据Table 具有相同的列headers。但是,DT2 的行数可能相同也可能不同。

ID | Type | Value

我需要新的 Table 根据 "Type" 列中返回的结果数添加必要的行,并将 DT3 行 ID = DT1.ID 和值设置为"N/A"

       DT1                        DT2                             DT3
ID | Type   | Value        ID | Type   | Value        ID | Type   | Value
1   ItemCost   5000        27  ItemCost   3800        27  ItemCost   3800
2   TravCost   5700        28  TravCost   4851        28  TravCost   4851
3   UpCharge   3600                                   3   UpCharge   N/A
4   TaxCost    7000                                   4   TaxCost    N/A

这是我针对此问题的代码:

            DataTable dt1 = new DataTable();
            dt1.Columns.Add("ID");
            dt1.Columns.Add("Type");
            dt1.Columns.Add("Value");
            dt1.Rows.Add(new Object[] { "1", "ItemCost", "5000" });
            dt1.Rows.Add(new Object[] { "2", "TravCost", "5700" });
            dt1.Rows.Add(new Object[] { "3", "UpCharge", "3600" });
            dt1.Rows.Add(new Object[] { "4", "TaxCost", "7000" });
            DataTable dt2 = new DataTable();
            dt2.Columns.Add("ID");
            dt2.Columns.Add("Type");
            dt2.Columns.Add("Value");
            dt2.Rows.Add(new Object[] { "27", "ItemCost", "3800" });
            dt2.Rows.Add(new Object[] { "28", "TravCost", "4851" });
            DataTable dt3 = new DataTable();
            dt3 = dt2.Clone();
            foreach (DataRow item in dt2.Rows)
            {
                dt3.Rows.Add(new object[] { item["ID"], item["Type"], item["Value"] });
            }
            foreach (DataRow item in dt1.Rows)
            {
                DataRow[] drs = dt3.Select("Type='" + item["Type"].ToString() + "'");
                if (drs.Count() == 0)
                {
                    dt3.Rows.Add(new object[] { item["ID"], item["Type"], "N/A" });
                }
            }