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

时间:2011-04-05 12:45:19

标签: c# winforms datagridview

这是我的代码:

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

当我直接将数据源设置为学生时,会显示表中的所有列。我只需要显示例如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的返回。

为什么以前会有用,而这个新代码没有?

2 个答案:

答案 0 :(得分:2)

试试这个:

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

答案 1 :(得分:0)

好的,第一个版本错过了标记(假设是ASP.NET)。在WinForms中,只需右键单击网格和“编辑列”并绑定到:

dataGridView1.DataSource =来自studentInstanceRepo.FindAll()中的s                               其中s.GradeInstanceId == gradeInstanceId                               选择新的{s.Name,s.LastName};