我有三张桌子:学生,课程和学生课程。 StudentCourse只是一个联结表(也就是边表,链接表等),其中包含该行的唯一ID以及学生ID和课程ID。
我有一个表示课程的整数数组,因此输入可能只是1,2,3。 (这将来自对REST API的GET请求,但源并不重要)。
给定一个整数数组,我想返回所有与数组中所有课程ID相关联的学生。但是,我仍然希望归还那些可能没有通过课程ID的学生,因为他们甚至没有那么多的关联。
要概述这一点,假设我们有以下内容:
Student1有1,2门课程
Student2有2,3,4课程
我传入一个包含1,2,3的数组。尽管Student1没有课程ID 3,但仍然应该返回(他们的课程列表是我传入的SUBSET)。
答案 0 :(得分:0)
假设您拥有Student
实体和Course
实体。如果您正确设计模型,Student
应公开Courses
,Course
应公开Students
。
查询可以是这样的(使用Contains
):
//the input courseIDs
var courseIDs = new [] { 1,2,3 };
var students = Students.Where(e => e.Courses.All(x =>
courseIDs.Contains(x.ID)).ToList();
以下是使用Except
的另一个查询:
var students = Students.Where(e => e.Courses.Select(x => x.ID)
.Except(courseIDs).Count() == 0)
.ToList();