我在控制器中创建了一个学生列表,让我们说课程ID是5:
int courseID = 5;
var students = _context.Students.ToList()
每个学生都有一个IEnumerable课程,所以它可以有多个课程。你如何过滤它们,以便你只收到一份不属于该课程的学生名单?
例如:
var students = _context.Students.ToList().Where(student => student.NoCoursesHave(courseID == 5);
但这显然不起作用......
我知道当你只是处理像他们的名字这样的单个变量时,你可以很容易地过滤:
var students = _context.Students.ToList().Where(student => student.FirstName != "Bob");
超级简单!但是,如何在另一个IEnumerable中过滤IEnumerable?
答案 0 :(得分:4)
[...].Where(student => !student.Courses.Any(course => course.Id == 5));
假设Courses
是IEnumerable<Course>
类中Student
的名称,应该可以解决问题
如果有student.Courses.Any(course => course.Id == 5)
等于true
的课程,
Id
将返回5
,否则会返回false
。
根据评论,最后使用.ToList()
会更好。