实现有相同字段的不同记录中不同字段的拼接

来源:互联网 发布:php自动加载类参数 编辑:程序博客网 时间:2024/05/01 09:12


处理前:
ID  itemId  title
1  3  aaa
2  1  bbb
2  2  bbb
2  10  bbb
4  1  ccc
4  8  ccc
5  8  ddd


处理后:

ID  itemId  title
1  3 aaa
2  1,2,10  bbb
4  1,8  ccc
5  8  ddd

 

asp.net程序实现:

DataTable dt = new DataTable();        DataColumn c1 = new DataColumn();        c1.ColumnName = "ID";        dt.Columns.Add(c1);        DataColumn c2 = new DataColumn();        c2.ColumnName = "itemId";        dt.Columns.Add(c2);        DataColumn c3 = new DataColumn();        c3.ColumnName = "title";        dt.Columns.Add(c3);        DataRow row;        row = dt.NewRow();        row[0] = "1";        row[1] = "3";        row[2] = "aaa";        dt.Rows.Add(row);        row = dt.NewRow();        row[0] = "2";        row[1] = "1";        row[2] = "bbb";        dt.Rows.Add(row);        row = dt.NewRow();        row[0] = "2";        row[1] = "2";        row[2] = "bbb";        dt.Rows.Add(row);        row = dt.NewRow();        row[0] = "2";        row[1] = "10";        row[2] = "bbb";        dt.Rows.Add(row);        row = dt.NewRow();        row[0] = "4";        row[1] = "1";        row[2] = "ccc";        dt.Rows.Add(row);        row = dt.NewRow();        row[0] = "4";        row[1] = "8";        row[2] = "ccc";        dt.Rows.Add(row);        row = dt.NewRow();        row[0] = "5";        row[1] = "8";        row[2] = "ddd";        dt.Rows.Add(row);        DataTable dt1 = dt.Clone();        int j = 0;        for (int i = 0; i < dt.Rows.Count; i++)        {            if (i == 0)            {                row = dt1.NewRow();                row[0] = dt.Rows[i][0];                row[1] = dt.Rows[i][1];                row[2] = dt.Rows[i][2];                dt1.Rows.Add(row);                ++j;            }            else            {                if (dt.Rows[i][0] == dt.Rows[i - 1][0])                {                    dt1.Rows[j - 1][1] = dt1.Rows[j - 1][1].ToString() + "," + dt.Rows[i][1].ToString();                }                else                {                    row = dt1.NewRow();                    row[0] = dt.Rows[i][0];                    row[1] = dt.Rows[i][1];                    row[2] = dt.Rows[i][2];                    dt1.Rows.Add(row);                    ++j;                }            }        }        this.GridView1.DataSource = dt.DefaultView;        this.GridView1.DataBind();        this.GridView2.DataSource = dt1.DefaultView;        this.GridView2.DataBind();