2009-01-11 83 views
1

我有一个包含三个表(学生,课程和第三个StudentsCourses分配表)的经典多对多场景。带分组的实体框架查询(多对多)

我在我的新项目中使用EF并且EF设计器不创建第三个表格。 我需要选择所有cources以及分配给它的学生人数。 使用普通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到SQL。 请指教。

谢谢。

回答

2

EF设计师隐藏表格。它仍然存在,但它只是为你创建联想,所以你可以从课程中引用学生,反之亦然。

0

你可以做这样的事情:

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

以获取更多信息看this page