我制作了一些计算数据网格内容平均值的软件,下面的代码完美无缺,但我只想计算第一行,第二行和第三行,30行数据的平均值。为此,我需要指定row.count
,这可能吗?
这是我的代码:
for (int i = 0; i < dataGridView1.Rows.Count - 1; ++i) {
sum +=Convert.ToDouble(dataGridView1.Rows[i].Cells["heartrate"].Value);
}
答案 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的价值类型...... 告诉我你喜欢的类型,我会帮助你更好......