选择要在DataGridView中显示的数据的首选方法是什么?

本文关键字:方法 是什么 数据 选择 DataGridView 显示 | 更新日期: 2023-09-27 17:49:17

我的代码:

private void LoadStudents()
{
    Int64 gradeInstanceId = Convert.ToInt64(cmbGradeInstance.SelectedValue);
    StudentInstanceRepository studentInstanceRepo = new StudentInstanceRepository();
    var studentInstances = studentInstanceRepo.FindAll()
                    .Where(s => s.GradeInstanceId == gradeInstanceId);
    StudentRepository studentRepo = new StudentRepository();
    List<Student> students = new List<Student>();
    foreach (var item in studentInstances)
    {
        students.Add(studentRepo.FindStudent(item.StudentId));
    }
    dataGridView1.DataSource = students;
}

当我直接将数据源设置为students时,将显示表中的所有列。例如,我只需要显示Name和LastName,它们都是Student类中的属性。

如何显示?谢谢!


编辑:

这在以前版本的表单中是有效的:

dataGridView1.DataSource = studentRepo.FindAll()
                          .Where(s => s.GradeParaleloId == gradeID)
                          .Select(s => new { Codigo = s.StudentId, RUDE = s.Rude, Nombre = s.Name + " " + s.LastNameFather + " " + s.LastNameMother, Telefono = s.Telephone });

FindAll()方法只是IQueryable的返回值。

为什么以前可以,而这个新代码不行?

选择要在DataGridView中显示的数据的首选方法是什么?

试试这个:

dataGridView1.DataSource = students.Select(a=> new{a.Name, a.LastName}).ToList(); 

好吧,第一个版本有点偏离了目标(假设是ASP.NET)。在WinForms中,只需右键单击grid和"编辑列",并绑定到这个:

dataGridView1。DataSource = from s in studentInstanceRepo.FindAll()where s.GradeInstanceId == gradeInstanceIdselect new {s.Name, s.LastName};