如何在LINQ中查询基于链接表的数据

时间:2013-01-04 11:07:49

标签: c# linq

表1:学生

StudentID, StudentName

表2:课程

CourseID, CourseName

表3:

GroupID, GroupName

表4: StudentCourseGroup

StudentID, CourseID, GroupID

我希望所有属于'xyz'课程的学生都采用以下格式

Class MyStudent

    string StudentName
    String [] Groups

每个学生都可以成为一个或多个组的成员,我需要在我的LINQ查询中填充“Class MyClass”,以便它在每个对象中保存StudentName和List of Groups。

你能否建议一个可以这样做的LINQ查询。

1 个答案:

答案 0 :(得分:1)

var query = from s in db.Student
            join scg in db.StudentCourseGroup on s.StudentID equals scg.StudentID
            join c in db.Course on scg.CourseID equals c.CourseID
            join g in db.Group on scg.GroupID equals g.GroupID
            where c.CourseName == "xyz"
            select new { s, g } into x
            group x by x.s into studentGroups
            select new MyStudent {
                StudentName = studentGroups.Key.StudentName,
                Groups = studentGroups.Select(sg => sg.g.GroupName)
            };