对datatable进行汇总

whenthat 2015-09-19 06:59:24
对查询计算生成的datatable很多行数据,进行汇总

有没有好的方法推荐


datatable有四列, 汇总结果 只要两列(项目,数量)
...全文
258 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
whenthat 2015-09-23
  • 打赏
  • 举报
回复
引用
原datatable你可以考虑将结构设为5列,增加了一列汇总列,生成datatable的同时汇总数据也一并计算填充,完成之后copy()出来一个副本,原表删掉汇总列保持与数据库一致结构,通过ado.net一次性插入,副本表删掉多余的三列供你及时取得你要的那两列的表。copy的操作+删除列的操作会很快,比定义一个新结构的表再循环填充数据要效率高。
看了好几张沉思了许久,没理解大神你的方法,看来我还是太菜了, 但感谢你给我新的灵感!

SELECT 项目, Sum(x.数量) AS 数量 FROM (
明细1
 UNION ALL 
明细N
)
ajianchina 2015-09-22
  • 打赏
  • 举报
回复
原datatable你可以考虑将结构设为5列,增加了一列汇总列,生成datatable的同时汇总数据也一并计算填充,完成之后copy()出来一个副本,原表删掉汇总列保持与数据库一致结构,通过ado.net一次性插入,副本表删掉多余的三列供你及时取得你要的那两列的表。copy的操作+删除列的操作会很快,比定义一个新结构的表再循环填充数据要效率高。
whenthat 2015-09-22
  • 打赏
  • 举报
回复
引用
结果用list 如果你想将结果还用datatable,那就将结果汇总到其中一列,然后删掉多余的两列,不过没那必要,你只是要一个计算结果,list很适合。
如果只要计算结果的话 我会选用你的方法! 但现在需要的是张表! 我现在是将明细的数据写入数据库后,查询得到的表。 由于写入过程需要长时间等待,所以发帖请教下大神,有没有别的解决方案。
ajianchina 2015-09-20
  • 打赏
  • 举报
回复
结果用list 如果你想将结果还用datatable,那就将结果汇总到其中一列,然后删掉多余的两列,不过没那必要,你只是要一个计算结果,list很适合。 例如:

Dim list = table.AsEnumerable().Select(Function(p) New With { _
			.项目 = p.Field(Of String)("项目"), _
			.数量汇总 = p.Field(Of Integer)("数量1") + p.Field(Of Integer)("数量2") + p.Field(Of Integer)("数量3") + p.Field(Of Integer)("数量4") _
			}).ToList()
whenthat 2015-09-20
  • 打赏
  • 举报
回复
引用
DataTable.Compute()是专门干这个的,根据你的要求设计公式,指定字段进行计算,这是DataTable的内置方法,如果是这个对象,没什么比他更快的了,你自己找一下用法,。
查找了下.Compute()输出的是合计结果(数字) 我需要的是张表!
ajianchina 2015-09-19
  • 打赏
  • 举报
回复
DataTable.Compute()是专门干这个的,根据你的要求设计公式,指定字段进行计算,这是DataTable的内置方法,如果是这个对象,没什么比他更快的了,你自己找一下用法,。

16,553

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧