动态列的 datatable 中 相同行的数据合并,求代码方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了动态列的 datatable 中 相同行的数据合并,求代码方法相关的知识,希望对你有一定的参考价值。

gz A B C D
a 1 0 0 0
b 0 2 0 0
c 0 0 3 0 ==========》
d 0 0 0 4
a 0 5 0 0
b 0 0 6 0
a 0 0 7 0

gz A B C D
a 1 5 7 0
b 0 2 6 0
c 0 0 3 0
d 0 0 0 4

将gz列中同名的行合并,A B C D为列,而且是动态的,可能是A B C D E 。。。。等等 合并时,数值可以是相加的

参考技术A   public void FilterDuplicate()
        
            DataTable dt = new DataTable("person");
            dt.Columns.Add("name", typeof(string));
            dt.Columns.Add("age", typeof(string));
            dt.Columns.Add("sex", typeof(string));

            dt.Rows.Add("张三", "28", "男");
            dt.Rows.Add("李四", "28", "男");
            dt.Rows.Add("张三", "28", "男");

            string[] distinctcols = new string[(dt.Columns.Count)];
            foreach (DataColumn dc in dt.Columns)
            
                distinctcols[dc.Ordinal] = dc.ColumnName;
            

            DataTable dtqc = new DataTable("person1");
            DataView dataview = new DataView(dt);
            dtqc = dataview.ToTable(true, distinctcols);

        

随便写的,看符合你的情况吗;dt是未去重,dtqc是去重后的

参考技术B select sum(A) as A,sum(B) as B ,sum(C) as C,sum(D) as D from gz
我这边没有装数据库, 你试试可不可以...看错题目了....等下我再想想....

这样:
select gz,sum(A) as 'A',sum(B) as 'B',sum(C) as 'C',sum(D) as 'D' from test group by gz

从datatable里取某行某列的值

我在datalist里绑定了一个之前存储的datatable,现在我想取出datatable里某行某列的值,这个某行是由用户来指定的,然后代码要取出这一行里所有的列值。求解!!在线等,赶着交作品!

参考技术A 实现的方式有几种。
第一种,把datatable存入Session,然后在下次请求的时候读出,再根据绑定的ID号遍历其中的某一行。
第二种,把datatable存入ViewState里面,然后在下次请求的时候读出,再根据绑定的ID号遍历其中的某一行。
第三种,在每一行第一列(模板列)放一个Hidden控件,绑定ID主键,请求时,通过在事件里使用FindControl方法取得这个Hidden控件取得ID值,然后再查询数据库,单独取这行,就得到了。

三种方法用的情况不一样,但是对于你想要的,显然第三种是最好的,也是效率最高的。本回答被提问者采纳

以上是关于动态列的 datatable 中 相同行的数据合并,求代码方法的主要内容,如果未能解决你的问题,请参考以下文章

如何合并具有不同列的相同行?

easyui datagrid 合并 相同行

当我尝试合并具有相同行大小的数据时,问题增加了行

c# 如何从datatable中取出某列的值并去除这一列的相同值,并将这列添加到新的表中

js 按相同行合并table单元格

如何将两个表与对应相同id号的相同行数合并在一起?