具有分组的实体框架查询(多对多)

时间:2009-01-11 20:10:18

标签: linq-to-sql ado.net ado.net-entity-data-model

我有一个经典的多对多场景,有三个表(学生,课程和第三个学生课程分配表)。

我在我的新项目中使用EF而EF设计师没有创建第三个表。 我需要选择所有的资源以及分配给它的学生人数。 使用纯SQL非常简单:

select c.Id, c.Name, Count(sc.*) as StudentCount 
from Courses c left join StudentCourses sc on(c.Id=sc.CourseId)
group by c.Id, c.Name

但我无法弄清楚如何将此查询转换为Linq to SQL。 请指教。

谢谢。

2 个答案:

答案 0 :(得分:2)

EF设计师隐藏了这张桌子。它仍然存在,但它只是为你创建了关联,所以你可以从课程中引用学生,反之亦然。

答案 1 :(得分:0)

你可以这样做:

var list = from c in context.Courses
           from s in c.Students
           select new
           {
             StudentName=s.Name,
             Class=s.Class,
           };

有关详细信息,请查看this page