实体框架多对多查询

时间:2015-09-25 22:08:37

标签: vb.net entity-framework linq-to-entities entity-framework-6

我正在努力在实体框架中编写一个查询来处理我设置的多对多关系。我想要做的是从TableA获取属于与TableB的关系的项目,同时从结果中知道哪个关系是正确的匹配。

例如,如果我使用的是学生和课程,我想找一组课程中的所有学生,并且只返回那些匹配的课程。我非常特别想与学生一起开始查询,因为只需查看课程导航属性即可轻松完成查询。

我想要的是一个学生列表,其中每个学生只包含我的查询中的课程集(不是学生正在学习的每门课程)。

下面的内容很接近,我得到了正确的学生列表,但课程的导航属性显示了所有课程,而不是我查询的子集。我想避免在可能的情况下再次查询,只需返回我需要的学生/课程集。

Dim listOfStudents = From s In Students
                                 From c In s.Courses
                                 Where listOfCourseIds.Contains(c.CourseId)

1 个答案:

答案 0 :(得分:0)

如果两者之间没有联结表,请尝试:

from s in dc.Students
from c in s.Courses
where c.CourseID == courseID
select s;

如果实体在两者之间有联结表,请尝试:

from s in dc.Students
from e in s.StudentsCourses
where e.Course.CourseID == courseID
select s;