【问题标题】:How to combine two or more DataTables dynamically in c#如何在c#中动态组合两个或多个DataTables
【发布时间】:2018-02-02 21:35:09
【问题描述】:

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

DT1 and DT2

每个 DataTable 都有相同的列标题。但是,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

【问题讨论】:

  • 我基本上需要像 vlookup 这样的东西。但是,我需要使用结果集来代替表格。

标签: c# mysql datatable clone resultset


【解决方案1】:

这是我解决这个问题的代码:

            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" });
                }
            }

【讨论】:

  • 是的,它非常接近工作,但还有一件事。如何转换值类型?输入字符串的格式不正确。无法在值列中存储 。预期类型为 Double。谢谢冰龙
  • 感谢冰龙的帮助。我最终只是将这个:CONVERT (VARCHAR(50),Value) AS Value 添加到每个 DataTable 的原始查询语句中。再次感谢您的帮助
猜你喜欢
  • 2013-12-29
  • 1970-01-01
  • 2017-07-24
  • 1970-01-01
  • 2014-07-04
  • 2015-10-21
  • 2019-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多