按LINQ中的子表分组
本文关键字:LINQ | 更新日期: 2023-09-27 18:29:16
我有学生表和科目表,我需要按科目对学生进行分组。我尝试了以下内容,但没有显示。StudentSubjects.SubjectName。如何用子表编写分组。
学生->学生ID |姓名
StudentSubjects->SubjectID|StudentID|SubjectName
var list = from s in students
group s by s.StudentSubjects.? into g
select new StudentSubjectsCounts
{
Name = g.Key,
Count = g.Count(),
};
听起来应该查询StudentSubjects
而不是Student
:
var list = from ss in studentSubjects
group ss by s.SubjectName into g
select new StudentSubjectsCounts
{
Name = g.Key,
Count = g.Count(),
};
或者,从学生名单开始:
var list = students.SelectMany(s => s.StudentSubjects)
.GroupBy(ss => ss.SubjectName)
.Select(g => new StudentSubjectsCounts
{
Name = g.Key,
Count = g.Count(),
});
您应该能够通过StudentSubject
对象本身进行分组
var list = from s in students
group s by s.StudentSubjects into g
select new StudentSubjectsCounts
{
Name = g.Key.SubjectName,
Count = g.Count(),
};
但如果你不想,可以使用Select
来投影名称
var list = from s in students
group s by s.StudentSubjects.Select(ss => ss.SubjectName) into g
select new StudentSubjectsCounts
{
Name = g.Key,
Count = g.Count(),
};