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


处理前:
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();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值