我想按此 Excel 电子表格中的“更改日期”列对 VB.NET 数据表进行分组:
因此,最终结果将如下所示:
目前,我正在尝试通过以下 LINQ 查询将行组合在一起:
Dim lQuery = From d In dtData Group d By key = "Change Date" Into Group _
Select changeDate = key, testGroup = Group
最终目标是创建一个具有指定分组的新 DataTable。
更新:我觉得我在以下方面取得了一些进展:
Dim tester = dtData.AsEnumerable().GroupBy(Function(row) New With { _
Key .ChangeDate = row("Change Date")})
dtData = LINQToDataTable(tester)
我从http://forums.asp.net/post/4469664.aspx获得了 LINQToDataTable 函数,因为没有出现 CopyToDataTableMethod。
这将创建以下数据表:
它显然分组正确,但没有选择其他列。有什么建议吗?
更新:
所以我接受了 D Stanley 的建议,并将我的 LINQ 查询修改为以下内容:
Dim lQuery = From d In dtData.AsEnumerable() _
Group d By key = "Change Date" _
Into test = Sum(d(2)), _
test2 = Sum(d(3))
此代码在 Sum() 函数上产生以下错误:
因此,我尝试将行值转换为双精度值,它编译正确,但在尝试将空值转换为双精度值时显然会引发运行时异常:
Dim lQuery = From d In dtData.AsEnumerable() _
Group d By key = "Change Date" _
Into test = Sum(CDbl(d(2))), _
test2 = Sum(CDbl(d(3)))
我应该将什么传递给 Sum 函数,以便它能够正确编译并正确运行?