首页 新闻 会员 周边

如何对datatable中的数据进行删选以及合并行

0
悬赏园豆:200 [已解决问题] 解决于 2016-08-10 16:37

如题,我从数据库查出来一组数据并放到了datatable中 现在要把这个datatable里面重复的数据给合并在一起 然后再放到一个新的datatable
比如这个表中中三条这样的数据:
姓名   部门    分数

张三  研发部  96

张三  研发部  99

张三  研发部  89
然后把这样的数据合并成这样一行的数据并放到新的datatable中:

张三  研发部  284(284是上面3条数据分数列相加的和)
这个datatable中至少有400条+的数据,求一种能够快速去重的写法

_daring的主页 _daring | 初学一级 | 园豆:24
提问于:2015-09-10 23:48
< >
分享
最佳答案
0

一定要用Datatable来吗?在查询时可以不?select name ,min(derpartment),sum(score) from T_score group by name

收获园豆:150
happydaily | 菜鸟二级 |园豆:301 | 2015-09-11 08:38

谢谢,不可以的,因为第一次从数据库中查出的数据(也就是不管是否重复)需要在页面上绑定将数据绑定,然后点击按按钮触发一个事件  再对这个datatable进行查重以及合并行。

_daring | 园豆:24 (初学一级) | 2015-09-11 08:41

最终查重以及合并好的数据是会放到一个新的datatable中进行下一步操作的

_daring | 园豆:24 (初学一级) | 2015-09-11 08:42

@gate36E: 办法一,用SQL,你可以第一次显示时Gridview绑定的SQL语句为你原来的SQL,单击合并按钮时绑定成我提供给你的SQL。

办法二,用Linq, var d = from s in dt.Rows.Cast<DataRow>() group s by s.Field<int>("Name") into g select new {
                g.Key,
                score = g.Sum(s=>s.Field<decimal>("score"))
            };

当然了,Linq本质还是循环,你也可以自己循环Datatable

happydaily | 园豆:301 (菜鸟二级) | 2015-09-11 08:58

@happydaily: 谢谢了!

DrMundo | 园豆:123 (初学一级) | 2015-09-11 09:54
其他回答(2)
0

以下两篇文章可以参考:

1, C#用DataTable实现Group by数据统计  里面介绍了三种方法

2,LINQ to Datatable Group by and return all columns   这个SUM(MARK)和上篇文章中的 第三种方法一样

收获园豆:25
橙子在上海 | 园豆:396 (菜鸟二级) | 2015-09-11 09:05
0

“因为第一次从数据库中查出的数据(也就是不管是否重复)需要在页面上绑定将数据绑定,然后点击按按钮触发一个事件  再对这个datatable进行查重以及合并行。”。合并后的数据要写入数据库吗?如果是的话,可以写个存储过程实现。点击按钮触发事件后调用这个存储过程。如果合并后的结果要显示出来的话,再查询一下。

收获园豆:25
会长 | 园豆:12401 (专家六级) | 2015-09-11 17:53
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册