在 LINQ 中通过内部联接和分组获取结果

Get result with inner join and group by in LINQ

我很难分组,基本上我需要获得所有教师的列表以及他们在所有 类 中负责的学生总数。我需要使用 Linq 表达式

这是ER图

LINQ

from _teacher in Teachers
join _class in Classes on _teacher.Id equals _class.TeacherId 
join _studentClasses in StudentClasses on _class.Id equals _studentClasses.ClassId 
group _studentClasses by _studentClasses.StudentId into _grouped 
select new {_teacher, _class.Name, _studentClasses.StudentId}

您只能使用分组依据的列。所以我认为你可以这样做:

from _teacher in Teachers
join _class in Classes 
    on _teacher.Id equals _class.TeacherId 
join _studentClasses in StudentClasses 
    on _class.Id equals _studentClasses.ClassId 
group _studentClasses by 
new
{
   TeacherName=__teacher.Name,
   ClassName=_class.Name
} 
into _grouped 
select new 
{
    _grouped.Key.TeacherName, 
    _grouped.Key.ClassName, 
    stundetCount=_grouped.Count()
}