Vb.net 如何获得每10行的值之和?
在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. . . .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
有多种方法,以下是一个示例: 循环每行求和,然后每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