1 回答
TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超4個(gè)贊
看起來(lái)列是每個(gè)班級(jí),而行是每個(gè)學(xué)生,具體取決于您如何進(jìn)行平均和最大值。如果是這樣,那么您將需要一些內(nèi)部變量來(lái)保持通過(guò)閾值,在您的示例中為 50 分。因此,您可以使用 Linq 輕松獲得所需的內(nèi)容。您可能需要檢查除以零錯(cuò)誤,但這是它的要點(diǎn):
dataGridView1.Rows.Add(txt_name.Text, txt_grade.Text);
private void btn_calculate_Click(object sender, EventArgs e)
{
int passingMarks = 50;
int[] columnData = (from DataGridViewRow row in dataGridView1.Rows
where row.Cells[1].FormattedValue.ToString()!= string.Empty
select Convert.ToInt32(row.Cells[1].FormattedValue)).ToArray();
lbl_average.Text = "Average grade is: " + columnData.Average().ToString();
lbl_highest.Text = "Highest grade is: " + columnData.Max().ToString();
var passingStudents = columnData.AsQueryable().Where(g=>g >= passingMarks).Count();
var passingRate = ((double)passingStudents / columnData.Length) * 100;
lbl_passrate.Text = String.Format("Pass Rate = {0}%", passingRate);
}
- 1 回答
- 0 關(guān)注
- 107 瀏覽
添加回答
舉報(bào)
