对 datagridview 中的多个数字求和,然后对特定列中的单元格值求和

Sum multiple digit from datagridview and then sum cell values from specific column

我有一个 datagridview 列,其值由多个数字组成。

我正在尝试从此列中获取所有单元格值的总和,但首先我需要对单个单元格中的数字求和。

column

示例:每个单元格都有“201”值。我需要获得“3”作为结果,然后对所有行值求和。因此,如果我有 3 行 201,我需要为每行获取 3,然后总共获取 9。

如何做到这一点?

这是我的代码,但似乎给出了错误的结果。

int sum4 = 0;
        for (int p = 0; p < dataGridView1.Rows.Count; ++p)
        {
            sum4 += Convert.ToInt32(dataGridView1.Rows[p].Cells[4].Value);
        }

        int sum5 = 0;
        while (sum4 != 0)
        {
            sum5 += sum4 % 10;
            sum4 /= 10;
        }

        label22.Text = sum5.ToString();

现在有 3 行结果是 9,4 行结果是 12,但是当我有 5 行时结果是 6!

编辑

提供的解决方案有效,但我错过了一步。

在我的 datagridview 中,我首先需要将“Ripetizioni”值乘以“Serie”值,然后将其乘以“Time under Tension”列的秒数总和。 A 结束所有行值的总和。

因此,对于单行,我需要乘以 11 x 3(第一个 wor 示例),然后是 201 与 3 的总和以及 11x3= 33 x 的乘积(201 结果的总和)。最后所有行的总和

我怎样才能做到这一点?

试试这个。在您的解决方案中,您每次都在更改 sum4 的值。这是错误的。

int finalSum = 0;
for (int p = 0; p < dataGridView1.Rows.Count; ++p)
  {
     finalSum += getCellDigitSum(Convert.ToInt32(dataGridView1.Rows[p].Cells[4].Value));
  }
    
 label22.Text = finalSum.ToString();
    
 int getCellDigitSum(int cellValue)
   {
     int l = cellValue;
     int result = 0;
    
     while (l > 0)
       {
         result += (l % 10);
    
         l = l / 10;
       }
    
    return result;
 }