C# 实体:返回数组子集中的记录集

C# 实体:返回数组子集中的记录集,c#,entity-framework,linq,C#,Entity Framework,Linq,我有三张桌子:学生桌、课程桌和学生桌。StudentCourse只是一个连接表(也称为边表、链接表等),其中包含行的唯一Id以及学生Id和课程Id 我有一个表示课程的整数数组,因此输入可以是1,2,3。(这将来自RESTAPI的GET请求,但源代码并不重要) 给定一个整数数组,我想返回与数组中所有课程Id关联的所有学生。然而,我仍然希望返回那些可能没有通过课程Id的学生,因为他们甚至没有那么多的关联 为了概述这一点,假设我们有以下内容: 学生1有课程1,2 学生2有课程2、3、4 我传入一个包

我有三张桌子:学生桌、课程桌和学生桌。StudentCourse只是一个连接表(也称为边表、链接表等),其中包含行的唯一Id以及学生Id和课程Id

我有一个表示课程的整数数组,因此输入可以是1,2,3。(这将来自RESTAPI的GET请求,但源代码并不重要)

给定一个整数数组,我想返回与数组中所有课程Id关联的所有学生。然而,我仍然希望返回那些可能没有通过课程Id的学生,因为他们甚至没有那么多的关联

为了概述这一点,假设我们有以下内容:

学生1有课程1,2

学生2有课程2、3、4


我传入一个包含1,2,3的数组。即使Student1没有课程Id 3,也应该返回它们(它们的课程列表是我传入的内容的子集)。

假设您有
学生
实体和
课程
实体。如果模型设计正确,
学生
应公开
课程
课程
应公开
学生

查询可以是这样的(使用
包含
):

这里是另一个使用
的查询,除了

var students = Students.Where(e => e.Courses.Select(x => x.ID)
                                    .Except(courseIDs).Count() == 0)
                                    .ToList();

但是,我仍然希望返回那些可能没有通过课程Id的学生-因此从技术上讲,您需要它来返回所有学生-或者您必须在db.BTW中输入所有学生,在这里发布您尝试过的代码。我现在可以理解你的意思了。你想要的可能是让所有学生在通过id列表指定的课程中至少参加一门课程。不完全是这样,我基本上希望所有学生都是我传入的id数组的子集。如果是这样,我上面的第二条评论就是你想要的,你应该发布一些你现在拥有的代码(至少关于你的模型的一些东西),我可能会帮忙。不是,因为它不是“至少一个”,而是所有ID,除了那些学生甚至没有关联的ID。使用上面的示例,如果我传入1,则不会返回任何内容,因为没有传入2。1,2,3将返回Student1,因为1和2已传入,但我们忽略了3
var students = Students.Where(e => e.Courses.Select(x => x.ID)
                                    .Except(courseIDs).Count() == 0)
                                    .ToList();