这是我的代码:
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的返回。
为什么以前会有用,而这个新代码没有?
答案 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};