datagridView滚动平均值

时间:2015-05-04 13:51:13

标签: c# math datagridview average

我制作了一些计算数据网格内容平均值的软件,下面的代码完美无缺,但我只想计算第一行,第二行和第三行,30行数据的平均值。为此,我需要指定row.count,这可能吗?

这是我的代码:

for (int i = 0; i < dataGridView1.Rows.Count - 1; ++i) {
    sum +=Convert.ToDouble(dataGridView1.Rows[i].Cells["heartrate"].Value);
}

1 个答案:

答案 0 :(得分:0)

所以你想在你的循环变量中创建Row.Count吗?

  private double average(int firstRow,int RowsCount)
  { 
      double sum=0d;
      for (int i = firstRow; i < RowsCount; i++) 
      {
          for(int ii=0;ii<dataGridView1.Columns.Count;ii++)
          {
          sum +=Convert.ToDouble(dataGridView1[i,ii].Value);
          }
      }
      return sum/(RowsCount*dataGridView1[i].Columns.Count);
  } 
那喜欢?还是我搞错了? (抱歉还不能发表评论。)

编辑:

如果你喜欢它更短,你当然可以尝试lambda:

 private double average(int startIDX ,int lng )
    {
        return dataGridView1.Rows.OfType<DataGridViewRow>().Where(x => x.Index >= startIDX && x.Index < startIDX + lng).Select(x => x.Cells.OfType<DataGridViewCell>().Sum(y => {try{return Convert.ToInt32(y.Value);}catch{return 0;}})).Average();
    }
例如,

返回行[startIDX]和行[startIDX + lng]之间所有行的平均值。在这里,我使用“int”作为Cell的价值类型...... 告诉我你喜欢的类型,我会帮助你更好......