如何优雅地解决此出勤表问题?

| 基本上,我想显示所有学生的列表(最左边有他们的名字),并在每行(每个学生)上显示comboBox中所选月份的每个日期。 我对如何解决这个问题感到困惑。 这是我到目前为止的内容:
//cmbMes is the combobox that holds each month to be selected.
private void cmbMes_SelectedIndexChanged(object sender, EventArgs e)
{
    dataGridView1.DataSource = null;
    int gradeParaleloId = Convert.ToInt32(cmbGradeParalelo.SelectedValue);
    var studentRepo = new StudentRepository();
    var students = studentRepo.FindAllStudentsFromGradeParalelo(gradeParaleloId);
    var rows = new List<DataGridViewRow>();

    foreach (var student in students)
    {
        DataGridViewRow newRow = new DataGridViewRow();
        newRow.SetValues(new object[] { \"test\", \"test\", \"test\" });
        rows.Add(newRow);
    }

    dataGridView1.DataSource = rows;
}
因此,出于测试目的,我在那做了。它正在获取正确的学生,但是SetValues方法似乎并没有按照我认为的去做。 目前,我愿意提出建议。我之所以只做这种事情,是因为我才刚刚开始解决它。也许有一些使用Linq-fu的更好的方法。 具体的问题是,这是正确的方法吗?创建DataGridViewRows的集合并将它们设置为.DataSource吗? 感谢您的建议。     
已邀请:
您可能想要这样的东西:
 var q = from i in new int[] { 1, 2, 3, 4, 5, 6, 7 }
                select new { Id = i, Name = \"test\" };
        dataGridView1.DataSource = q.ToList();
诀窍是将属性名称转换为列。您无需在此处使用DataGridViewRow类型。     

要回复问题请先登录注册