当前位置: 移动技术网 > IT编程>开发语言>c# > c#中合并DataTable重复行的值

c#中合并DataTable重复行的值

2019年07月18日  | 移动技术网IT编程  | 我要评论

复制代码 代码如下:

            //datatable数据添加
            hashtable ht = new hashtable();
            datatable dt = new datatable();
            datacolumn dc = new datacolumn("id");
            dt.columns.add(dc);
            dc = new datacolumn("name");
            dt.columns.add(dc);
            dc = new datacolumn("values");
            dt.columns.add(dc);
            datarow dr = dt.newrow();
            dr["id"] = 1;
            dr["name"] = "张三";
            dr["values"] = "a";
            dt.rows.add(dr);
            dr = dt.newrow();
            dr["id"] = 2;
            dr["name"] = "李四";
            dr["values"] = "b";
            dt.rows.add(dr);
            dr = dt.newrow();
            dr["id"] = 3;
            dr["name"] = "张三";
            dr["values"] = "c";
            dt.rows.add(dr);
            datagridview1.datasource = dt;

            //合并
            for (int i = 0; i < dt.rows.count; i++ )
            {
                if (ht.containskey(dt.rows[i]["name"]))
                {
                    //获取行索引
                    int index = (int)ht[dt.rows[i]["name"]];
                    //获取最近一次的值(对应values)
                    string str = (string)dt.rows[index]["values"];
                    //拼接
                    dt.rows[index]["values"] = str + "|" + dt.rows[i]["values"];
                    //删除重复行
                    dt.rows.removeat(i);
                    //调整索引减1
                    i--;
                }
                else
                {
                    //保存名称以及行索引
                    ht.add(dt.rows[i]["name"], i);
                }

}

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网