Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 如何获得每10行的值之和?_Vb.net - Fatal编程技术网

Vb.net 如何获得每10行的值之和?

Vb.net 如何获得每10行的值之和?,vb.net,Vb.net,在Datagridview中有超过300行的列,并且希望获得每10行的总和。第1列中的数据之间没有间隙 我只想在另一列中得到每10行的总和。我试着向我展示每一行中的累积s 任何帮助都将不胜感激。非常感谢 C1 C2 二, 3. 4. 6. 5. 3. 5. 7. 6. 546 八, 9 4. 7. 5. 2. 1. 2. 5. 447 一, 2. 6. . . . 有多种方法,以下是一个示例: 循环每行求和,然后每10次输出求和并重置数字 For i = 0 To data1.Ro

在Datagridview中有超过300行的列,并且希望获得每10行的总和。第1列中的数据之间没有间隙

我只想在另一列中得到每10行的总和。我试着向我展示每一行中的累积s

任何帮助都将不胜感激。非常感谢

C1 C2

二, 3. 4. 6. 5. 3. 5. 7. 6. 546

八, 9 4. 7. 5. 2. 1. 2. 5. 447

一, 2. 6. . . .


有多种方法,以下是一个示例:

循环每行求和,然后每10次输出求和并重置数字

    For i = 0 To data1.Rows.Count - 1
        sum += data1(0, i).Value
        If i.ToString.EndsWith("9") Then 'since it starts at 0, 10th ends with 9 not 0
            data1(1, i).Value = sum
            sum = 0
        End If
    Next

使用LINQ获取每组n行的总和

Private Function getSumsOfGroupsOfNRows(n As Integer) As IEnumerable(Of Double)
    Return DataGridView1.Rows.OfType(Of DataGridViewRow).
        GroupBy(Function(r) Math.Truncate(r.Index / n)).
        Select(Function(g) g.Sum(Function(r) CDbl(r.Cells(0).Value)))
End Function
用这个测试它

Dim n = 10
' adds numbers 1 through 100 in the datagridview, for testing
DataGridView1.Rows.AddRange(Enumerable.Range(1, 100).Select(
    Function(r)
        Dim row As DataGridViewRow = DataGridView1.Rows(0).Clone
        row.Cells(0).Value = r
        Return row
    End Function).ToArray())
' get the sums in an IEnumerable(Of Double)
Dim sums = getSumsOfGroupsOfNRows(n)
' write into second column
For i = 1 To n
    DataGridView1.Rows.Item(n * i - 1).Cells(1).Value = sums(i - 1)
Next

如您的示例所示,行中是否确实存在间隙,或者这只是为了说明它?您能否得到前两行的总和?这将是一个良好的开端。如果你有这个,你能给我们看一下代码吗?不,没有差距,只是为了展示。。!谢谢。非常感谢德鲁尔对你的帮助!谢谢。@Ako通常通过点击答案左边的复选标记来感谢某人的回答。代码运行良好,但现在我遇到了不同的问题!当试图使用Cell1计算出的和来计算另一个参数时,我得到一个错误,因为从字符串转换为双精度是无效的。有没有办法把第1列的和转换成两倍?谢谢。@CruleD是一个对象,因此将其添加到整数和中可能会产生奇怪的结果。请尝试在您的桌面上选择Strictcode@Ako把Cdbl放在前面,像这个Cdbldata10,i.Value。但是所有这些值都是整数,所以应该使用Cint。
Dim n = 10
' adds numbers 1 through 100 in the datagridview, for testing
DataGridView1.Rows.AddRange(Enumerable.Range(1, 100).Select(
    Function(r)
        Dim row As DataGridViewRow = DataGridView1.Rows(0).Clone
        row.Cells(0).Value = r
        Return row
    End Function).ToArray())
' get the sums in an IEnumerable(Of Double)
Dim sums = getSumsOfGroupsOfNRows(n)
' write into second column
For i = 1 To n
    DataGridView1.Rows.Item(n * i - 1).Cells(1).Value = sums(i - 1)
Next