查阅参考 :https://zhidao.baidu.com/question/373715544347612924.html
我们有一个表:
图一
问题:我们想把同一Date 而且 同一 Code的Hour相加合并,例如这里我们需要把 Date为2021-09-27 Code为aa的Hour合并相加,所以Date 为 2021-09-27 Code 为 aa 的Hour 相加后为 6,合并后相当于以下效果:
图二
分析思路:利用group by可以合并 以Date和Code作为字典的唯一关键字,Hour相当于Value
操作:
首先读取表:
然后我们输出一下通过 Date 和 Code 合并同类项总共有多少个:
dt.Rows.Cast(Of System.Data.DataRow).
GroupBy(Function(r) r("Date").ToString + r("Code").ToString).Count.ToString
这边的输出是8个唯一的项,跟图二是一样的个数
然后我们看一下所有符合第一个(0)项的Hour是多少:
dt.Rows.Cast(Of System.Data.DataRow).
GroupBy(Function(r) r("Date").ToString + r("Code").ToString)(0).
Sum(Function(y) CDbl(y("Hour").ToString)).tostring
这边是6个hour, 跟图二相符
我们可以写一个循环去拿到左右的唯一项相加后的Hour:
最后结果:
如果想最后输出的DataTable像图二一样可以参考我以前的帖子,创建一个新的DataTable,每新增一行加入Date Code Hour