为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 dataGridView 的 WindowsForm c# 中查找通过率?

如何在 dataGridView 的 WindowsForm c# 中查找通过率?

C#
婷婷同学_ 2022-11-13 14:26:51
我是 C# 新手,所以请原谅我的愚蠢问题。所以。我有一个程序可以提示用户输入他们的姓名和成绩。到目前为止,我可以在 dataGridView 中找到给定成绩的平均成绩和最高成绩。这是平均和最大代码:    dataGridView1.Rows.Add(txt_name.Text, txt_grade.Text);    private void btn_calculate_Click(object sender, EventArgs e)    {        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();    }我现在需要得到通过率。例如,通过率为 50 分。如果 5 名学生中有 2 名得分 50 或更高,则通过率应为 40%,并应显示在我的 lbl_passrate 上。
查看完整描述

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);

}


查看完整回答
反对 回复 2022-11-13
  • 1 回答
  • 0 关注
  • 79 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信