[英]Linq groupby with joining table
假設有一個數據庫來管理學生。 我正在使用以下(簡化的)類:
學生
內部編號
字符串名稱
學生注冊信息
整型學生ID
國際課程 ID
課程
國際課程信息
字符串名稱
在上述表中,studentenrollmentinfo 是一個連接表,用於處理課程和學生之間的多對多關系。
現在我想查詢當前注冊不同課程列表的所有學生的姓名。 例如:
讓所有學生注冊生物、數學和藝術,我希望所有學生都注冊了所有這些課程。
我嘗試了以下方法:
List<string> requiredCourses = new List<string>(){"Maths", "Biology", "Arts"};
var query = from student in _context.students
join enrollmentInfo in _context.StudentEnrollmentInfo on
student.id equals enrollmentInfo.studentId
join course in _context.Course on course.id equals enrollmentInfo.courseId
where requiredCourses.All(r => r.equals(course.name))
select(student.name)
然而這不起作用,我的猜測是因為連接,除了連接表使列表變平,使得每個課程組合的每個學生都是一個唯一的值,因此永遠不會有任何 AND 條件為真.
任何人都可以提出一些建議來指引我正確的方向嗎?
List requiredCourses = new List() { "數學", "生物學", "藝術" }; var query =(從 _context.students 中的學生加入 _context.StudentEnrollmentInfo 中的學生。id 等於 _context.studentId 加入課程 _context.Course on course.id 等於enrollmentInfo.courseId,其中requiredCourses.Contains(course.name) select 學生。名稱).Distinct().ToList()
希望它能解決你的目的。 distinct 將有助於您的獨特數據
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.