1 回答

TA貢獻1785條經驗 獲得超4個贊
看起來列是每個班級,而行是每個學生,具體取決于您如何進行平均和最大值。如果是這樣,那么您將需要一些內部變量來保持通過閾值,在您的示例中為 50 分。因此,您可以使用 Linq 輕松獲得所需的內容。您可能需要檢查除以零錯誤,但這是它的要點:
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 關注
- 100 瀏覽
添加回答
舉報