首页 新闻 会员 周边 捐助

datatable中查找某些列重复的数据并做处理

0
悬赏园豆:80 [已解决问题] 解决于 2016-01-19 10:44

遇到的数据处理的问题,

datatable中有个别列数据相同(col1,col2,col3),某一列数据不同(col4),要求将col1,col2,col3相同的 col4 拼接起来。

目前用的 DataTable.Select("col1,col2,col3逐行扫")方法,因为数据量很大,效率很低。

有没有好的方法?

SuperRaccoon的主页 SuperRaccoon | 初学一级 | 园豆:18
提问于:2016-01-18 17:29
< >
分享
最佳答案
0

数据量大的话(假设真的很大,但是你的很大和我的很大也许还不一样,所以如果可以,请说明数量级,否则真是Bigger than bigger),没有最大,只有更大。

1、建议还是在数据库做这事。

2、加载这些数据都得不少时间吧。

3、得占用不少内存吧。

4、瑞祥说的LINQ也是可以动态查询的,在命名空间 system.data.linq.dynamic里面有相关的扩展,实在不够用的话

还可以自己 google linq dynamic。

收获园豆:25
爱编程的大叔 | 高人七级 |园豆:30844 | 2016-01-19 09:57

结贴散分

SuperRaccoon | 园豆:18 (初学一级) | 2016-01-19 10:45
其他回答(4)
0

 用linq吧.groupby一下就好了

收获园豆:35
吴瑞祥 | 园豆:29449 (高人七级) | 2016-01-18 17:46

这样做有个问题,我的筛选条件是可变的,因为想要做成通用的可配置,linq怎么动态实现

支持(0) 反对(0) SuperRaccoon | 园豆:18 (初学一级) | 2016-01-18 18:17

@arrivealive: 听不懂.你是筛选后分组处理还是筛选前分组处理.不管怎么着.

linq本来就是延迟加载的.所谓的动态不就是根据参数判断做指定操作嘛..

支持(0) 反对(0) 吴瑞祥 | 园豆:29449 (高人七级) | 2016-01-18 18:21

@arrivealive: LINQ是支持

var query=list.where("FieldName='123'") 这样的动态查询的,不用担心,你所需要的功能一定已经有人探索过了。

支持(0) 反对(0) 爱编程的大叔 | 园豆:30844 (高人七级) | 2016-01-19 10:13
0

你可以直接在数据库里实现,

select STUFF((select ','+col4 from table where col1=col2 and col1=col3
for xml path('')),1,1,'') as newField

收获园豆:10
时光与树 | 园豆:184 (初学一级) | 2016-01-18 17:56
0

这个在查询的时候做处理最好

收获园豆:5
CodeHsu | 园豆:5668 (大侠五级) | 2016-01-18 18:14
0

最好在绑定数据前筛选

收获园豆:5
搁忆 | 园豆:612 (小虾三级) | 2016-01-19 09:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册