vb.net - 如何从 vb.net 中的 DataTables 构建值的总和?
问题描述
我正在使用 VB.Net 从数据库中检索数据,进行一些计算,然后在 datagridview 中显示这些数据。我已经将数据库中的数据导入到我的软件中的 DataTable 中。到目前为止,一切都很好。
现在,我想将同一行中的另一列具有特定文本的列中的值相加。
这是一个例子。我有以下形式的数据(在 DataTable 中):
日期 // 类型 // 值 2020 年 10 月 9 日 // 值 80 // 92 2020 年 10 月 9 日 // value71 // 5 2020 年 10 月 9 日 // value63 // 2 2020 年 10 月 7 日 // 值 80 // 85 2020 年 10 月 7 日 // value71 // 10 2020 年 10 月 7 日 // value63 // 1
我想构建 3 个type
值的总和,其中“value80”、“value71”和“value63”来自同一日期。新变量的value_sum
计算应使得 2020 年 9 月 10 日:
value_sum = value80 + value71 + value63 = 92 + 5 + 2 = 99
2020 年 10 月 7 日:
value_sum = value80 + value71 + value63 = 85+ 10 + 1 = 96
如何计算新值以便将它们保存在另一个 DataTable 中?
解决方案
在 Linq 查询中,我们按日期字段分组并选择日期和总和。请参阅https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/queries/group-by-clause有一个 .CopyToDataTable 方法(https://docs.microsoft.com/en -us/dotnet/api/system.data.datatableextensions.copytodatatable?view=netcore-3.1)但我不知道它是否或如何与匿名类型一起使用。只需遍历查询结果并将行添加到新的 DataTable 就很容易了。
Private Sub OPCode()
'Create original DataTable with your sample data
Dim dt As New DataTable
dt.Columns.Add("ValueDate", GetType(Date))
dt.Columns.Add("Type", GetType(String))
dt.Columns.Add("Value", GetType(Integer))
With dt.Rows
.Add(#10/09/2020#, "value80", 92)
.Add(#10/08/2020#, "value71", 5)
.Add(#10/09/2020#, "value85", 2)
.Add(#10/07/2020#, "value80", 85)
.Add(#10/07/2020#, "value71", 10)
.Add(#10/07/2020#, "value63", 1)
End With
'Select the date groups and sum by group
Dim TotalsByDate = From row In dt.AsEnumerable
Group By DateValue = row.Field(Of Date)("ValueDate")
Into Dates = Group, Sum(row.Field(Of Integer)("Value"))
Select DateValue, Sum
'Prepare a new DataTable
Dim dt2 As New DataTable
dt2.Columns.Add("DateGroup", GetType(Date))
dt2.Columns.Add("DateSum", GetType(Integer))
'Fill the new DataTable
For Each item In TotalsByDate
dt2.Rows.Add(item.DateValue, item.Sum)
Next
'Display results
DataGridView1.DataSource = dt2
End Sub
推荐阅读
- google-analytics - 转化目标中的 Google Analytics UTM 代码
- bison - 请求成员“”不是结构或联合?在 Flex&Bison
- python - 当我运行 pygame 代码 exe 时显示 Pyinstaller“无法执行脚本应用程序”错误
- c# - 模型类中有构造函数时出错
- javascript - 将 (window.crypto.subtle.generateKey)-key 转换为 aes-js 密钥
- macos - Hadoop 3.3.0:RPC 响应的长度无效
- xml - 通过pyspark编写XML文件时如何定义命名空间?
- javascript - 将日期限制添加到 main 方法
- amazon-web-services - Terraform 多个工作区上的单个资源
- css - CSS线性渐变角度关键字到度数的转换