【问题标题】:Merge columns of Data Tables合并数据表的列
【发布时间】:2017-01-30 15:36:21
【问题描述】:

我正在读取一个“.xml”文件,我将从该文件中创建一个数据表。数据表的列取决于“.xml”文件。 下面是例子。 enter image description here

如示例所示,将从 .xml 文件中获取 data1、data2、data3...等。数据(a、b、c、d、as、asd.. 等)是相对于列标题(item1、item2、item3...等)添加的。

我想根据行的内容合并列。即第一列(item1)的data1应与第4列(item4)的data1合并,并应删除第4列。有可能吗?

以下是预期的输出: enter image description here

【问题讨论】:

  • 您能详细说明一下吗?
  • @user6002727 如果第一行的内容相同,我想合并列。
  • 但是第一列没有asd?那么如何才能给出预期的输出呢?
  • @user6002727 预期输出是在合并第一列和第四列之后
  • Huu Thien Tan Nguyen 已经回答了你的问题,如果不工作,请告诉我?

标签: c# datatable


【解决方案1】:
  public DataTable CombileDataTable(DataTable dt1, DataTable dt2)
    {
        DataTable dtNew = new DataTable();
        foreach (DataColumn col in dt1.Columns)
        {
            dtNew.Columns.Add(col.ColumnName);
        }
        foreach (DataColumn col in dt2.Columns)
        {
            dtNew.Columns.Add(col.ColumnName);
        }

        for(int i=0; i<dt1.Rows.Count; i++)
        {
            DataRow item = dtNew.NewRow();
            foreach (DataColumn col in dt1.Columns)
            {
                item[col.ColumnName] = dt1.Rows[i][col.ColumnName];
            }
            foreach (DataColumn col in dt2.Columns)
            {
                item[col.ColumnName] = dt2.Rows[i][col.ColumnName];
            }
            dtNew.Rows.Add(item);
            dtNew.AcceptChanges();              
        }       
        return dtNew;
    }

【讨论】:

    【解决方案2】:

    请这样做:

    static DataTable GetTable()
        {
            // Here we create a DataTable with four columns.
            DataTable table = new DataTable();
            table.Columns.Add("Item1", typeof(string));
            table.Columns.Add("Item2", typeof(string));
            table.Columns.Add("Item3", typeof(string));
            table.Columns.Add("Item4", typeof(string));
    
            // Here we add five DataRows.
            table.Rows.Add("a", "as", "asd", "");
            table.Rows.Add("b", "asd", "asd", "");
            table.Rows.Add("c", "a", "asd", "");
            table.Rows.Add("d", "a", "asd", "");
            table.Rows.Add("", "", "", "a");
            table.Rows.Add("", "", "", "d");
            table.Rows.Add("", "", "", "asd");
            return table;
        }
    
        DataTable dt = GetTable();
        foreach (DataRow dr in dt.Rows)
        {
            if (!String.IsNullOrEmpty(dr["Item4"].ToString()) && String.IsNullOrEmpty(dr["Item1"].ToString()))
            {
                dr["Item1"] = dr["Item4"].ToString(); //assign value of column 4 to column1 
            }
        }
        dt.Columns.Remove("Item4"); //delete column 4
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-25
      • 2022-11-11
      • 1970-01-01
      • 2021-12-26
      • 2018-05-20
      相关资源
      最近更新 更多