使用实体框架如何从表中检索集合?

时间:2011-04-09 02:18:02

标签: c# linq entity-framework

以下是表格:

enter image description here

我需要检索一组Student对象,这样我就可以访问它们的名字,姓氏等。

我有点被困,所以任何帮助都非常受欢迎,我总是试图学习和应用新东西来使它们坚持下去。 :)

到目前为止,我已经尝试过了:

private void cmbGradeParalelo_SelectedIndexChanged(object sender, EventArgs e)
{
    int gradeParaleloId = Convert.ToInt32(cmbGradeParalelo.SelectedValue);

    using (StudentRepository studentRepo = new StudentRepository())
    {
        studentRepo.FindAllStudents().Where(s => s.GradeStudents
    }
}

.GradeStudentsEntityCollection<GradeStudent>所以我认为我可以使用Linq查询数据,但我不知道如何。我从来没有做过这样的事情。 :)

感谢您的时间!

3 个答案:

答案 0 :(得分:1)

是的,您可以使用Linq进行查询。但是,有一个初学者需要注意:包含:

Context.Students
       .Include("GradeStudents")
       .Include("GradeStudents.GradeParalelo")
       .First<Student>(s => s.StudentId == 1)
       .GradeStudents

如果您提供更多关于您要做什么的信息,我可能会提供更多帮助。

另请注意,如果您的联接表(GradeStudents)没有额外的列,那么它将是一个Assocation,您可以直接从Student访问GradeParalelo。

答案 1 :(得分:1)

您可能会发现其中一个教程很有用,具体取决于您使用的是MVC还是Web窗体

MVC / Code First http://www.asp.net/entity-framework/tutorials/reading-related-data-with-the-entity-framework-in-an-asp-net-mvc-application

Web Forms / Database First http://www.asp.net/entity-framework/tutorials/the-entity-framework-and-aspnet- - 得到启动的部分-4

答案 2 :(得分:0)

如果你试图让所有学生至少有一个等级Paralelo,那么这将是有效的

studentRepo.FindAllStudents()
    .Where(s => s.GradeStudents.Any(gs => gs.GradeParaleloId == gradeParaleloId));