c# - 如何在c#中动态组合两个或多个DataTable

标签 c# mysql datatable clone resultset

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

DT1 and DT2

每个数据表都有相同的列标题。但是,DT2 可能具有也可能不具有相同数量的行。

ID | Type | Value

我需要新表根据“类型”列中返回的结果数添加必要的行,并将 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" });
                }
            }

关于c# - 如何在c#中动态组合两个或多个DataTable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45871157/

相关文章:

mysql - 如果当前日期小于或等于 7 月,SQL 选择日期 1 月到 7 月

C# - 如何从数据表中获取标题行并将其垂直排列在一列中?

c# - 从内部等待某些任务的方法返回 ValueTask 是否有意义

c# - DataTemplateColumn 需要 2 个选项卡才能获取内容

C# 通过变量引用方法?

MySql 合并查询

mysql - 与 MySQL 匹配字符串的问题

c# - 将数据从数组插入数据表

jsf - 如何以编程方式配置 dataTable 的 rowSelect 事件监听器

c# - WPF:更改 ContentControl 的内容时,新的内容对象不会触发加载的事件