在 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()
}
我很难分组,基本上我需要获得所有教师的列表以及他们在所有 类 中负责的学生总数。我需要使用 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()
}