datatable vb.net 2010中的sum列

datatable vb.net 2010中的sum列,vb.net,datatable,sum,Vb.net,Datatable,Sum,我试图获取我的数据表dt中的TotalAmount列的总和,但我总是得到以下错误: 对象引用未设置为对象的实例 我正在Visual Studio 2012中使用VB 代码如下: Dim table As DataTable = CartDataSet.Tables("dt") Dim result As Integer result = table.Compute("SUM(TotalAmount)", "") 您正在尝试取消引用空对象引用,这意味着表是空 这反过来意味着CartDataSet

我试图获取我的
数据表
dt
中的
TotalAmount
列的总和,但我总是得到以下错误:

对象引用未设置为对象的实例

我正在Visual Studio 2012中使用VB

代码如下:

Dim table As DataTable = CartDataSet.Tables("dt")
Dim result As Integer
result = table.Compute("SUM(TotalAmount)", "")

您正在尝试取消引用空对象引用,这意味着


这反过来意味着
CartDataSet
不包含名为
“dt”
的表,您正试图反引用空对象引用,这意味着
为空

这又意味着
CartDataSet
不包含名为
“dt”的表

  • 表为空
  • 表中没有记录
解决方案:

1-最好在计算前检查datatable状态,如

如果Not table为Nothing,并且table.Rows.Count>0,则
...
如果可能出现问题,则结束

  • 表为空
  • 表中没有记录
解决方案:

1-最好在计算前检查datatable状态,如

如果Not table为Nothing,并且table.Rows.Count>0,则
...
结束如果“.Compute”函数要工作,必须将变量“result”声明为“object”而不是“integer”。然后,您可以使用“convert.ToInt”将“result”中的值转换为整数

要使“.Compute”函数工作,必须将变量“result”声明为“object”,而不是“integer”。然后,您可以使用“convert.ToInt”将“result”中的值转换为整数

然后执行result.ToString(),您将获得输出


然后执行result.ToString(),您将获得输出

您可以使用linq,如下所示

Dim result As Decimal = dt.AsEnumerable().Sum(Function(row) row.Field(Of Decimal)("TotalAmount"))

你可以像这样使用linq

Dim result As Decimal = dt.AsEnumerable().Sum(Function(row) row.Field(Of Decimal)("TotalAmount"))

Dim table As DataTable=CartDataSet.Tables(“dt”)

将结果设置为整数


结果=IIf(IsDBNull(dtable.Compute(“总和(TotalAmount)”),0,dtable.Compute(“总和(TotalAmount)”,”)

Dim table As DataTable=CartDataSet.Tables(“dt”)

将结果设置为整数


result=IIf(IsDBNull(dtable.Compute(“SUM(TotalAmount)”,“”),0,dtable.Compute(“SUM(TotalAmount)”,“”)

Couly请您解压代码而不是oj只需键入一些代码行
Dim result As Object
result = table.Compute("SUM(TotalAmount)", "") 
Dim result As Decimal = dt.AsEnumerable().Sum(Function(row) row.Field(Of Decimal)("TotalAmount"))