函数不读取最后一个值

时间:2012-07-17 12:23:18

标签: vb.net for-loop datatable dataset dataview

我正在为一系列餐馆开发一个程序,他们通常应该能够通过连接到dbf文件的vb.net应用程序来计算他们的访客数量和销售额。 我的数据集正确填充,因为我的数据表(通过填写datarowview =正确的数据进行检查) 但后来我遇到了一个问题,在使用我的数据表的所有函数中,数据表跳过最终值,在这种情况下,它是一个月的所有值,因此它跳过31或30天。 尝试的时候,尝试每一个,调试很多(我怎么发现它是最后一个值)。但现在我不知道为什么函数

没有使用最后一个值
    Public Function Getgctakeout(ByVal i_table As DataTable)
       table = i_table
       i = 0
       gctakeout = 0

    For Each row As DataRow In i_table.Rows

        gctakeout = gctakeout + Convert.ToDouble(row(4))

    Next row
        'MessageBox.Show(gctakeout)
    Return gctakeout
    End Function

此函数不使用最后一行的值来计算gctakeout

主的名字是错的:)

1 个答案:

答案 0 :(得分:0)

假设您的DataTable确实填写正确,您还有两个其他选项可以获得总和。

  1. 使用旧的DataTable.Compute方法,该方法也适用于.NET< 2.0
  2. 使用Linq-To-DatSetEnumerable.Sum
  3. 1)

    Dim Sum = CType(table.Compute("Sum(ColumnName)", Nothing), Double)
    

    2)

    Dim Sum = table.AsEnumerable().
                    Sum(Function(row)row.Field(Of Double)("ColumnName"))