遇到的数据处理的问题,
datatable中有个别列数据相同(col1,col2,col3),某一列数据不同(col4),要求将col1,col2,col3相同的 col4 拼接起来。
目前用的 DataTable.Select("col1,col2,col3逐行扫")方法,因为数据量很大,效率很低。
有没有好的方法?
数据量大的话(假设真的很大,但是你的很大和我的很大也许还不一样,所以如果可以,请说明数量级,否则真是Bigger than bigger),没有最大,只有更大。
1、建议还是在数据库做这事。
2、加载这些数据都得不少时间吧。
3、得占用不少内存吧。
4、瑞祥说的LINQ也是可以动态查询的,在命名空间 system.data.linq.dynamic里面有相关的扩展,实在不够用的话
还可以自己 google linq dynamic。
结贴散分
用linq吧.groupby一下就好了
这样做有个问题,我的筛选条件是可变的,因为想要做成通用的可配置,linq怎么动态实现
@arrivealive: 听不懂.你是筛选后分组处理还是筛选前分组处理.不管怎么着.
linq本来就是延迟加载的.所谓的动态不就是根据参数判断做指定操作嘛..
@arrivealive: LINQ是支持
var query=list.where("FieldName='123'") 这样的动态查询的,不用担心,你所需要的功能一定已经有人探索过了。
你可以直接在数据库里实现,
select STUFF((select ','+col4 from table where col1=col2 and col1=col3
for xml path('')),1,1,'') as newField
这个在查询的时候做处理最好
最好在绑定数据前筛选