繁体   English   中英

合并数据表的列

[英]Merge columns of Data Tables

我正在读取“ .xml”文件,将从中创建数据表。 数据表的列取决于“ .xml”文件。 以下是示例。 在此处输入图片说明

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

我想合并有关行内容的列。 也就是说,第一列(item1)的data1应该与第四列(item4)的data1合并,并且第四列应该被删除。 可能吗?

以下是预期的输出: 在此处输入图像描述

请这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM