哪个linq用于在当前集合中的集合中进行集合搜索

时间:2014-03-22 00:27:07

标签: c# .net linq dbcontext

在我的数据库中我有表Courses,每个课程都包含Faculties的列表。

使用LINQ我需要获得所有具有指定教师身份的教师的课程。

我正在尝试做类似的事情:

        var courses = dc.Courses.Include("ClassTimes").Where(course => course.Facultys.Where(fac => fac.Id == currentFacultyId));

但它不起作用......我很确定应该有另一个为此目的创建的LINQ api,我只需要有人指点我。

谢谢

2 个答案:

答案 0 :(得分:3)

您可以使用.Any()来实现这一目标:

var courses = dc.Courses
                .Include("ClassTimes")
                .Where(course => course.Facultys.Any(fac => fac.Id == currentFacultyId));

答案 1 :(得分:1)

使用.Contains()

var courses = dc.Courses.Include("ClassTimes").Where(course => course.Facultys.Contains(fac => fac.Id == currentFacultyId));

<强>解释

Contains将解决此问题,因为Where表达式需要为集合中的每个项返回一个布尔答案。

Where - 返回与给定条件匹配的项目。

Contains - 返回boolean集合是否包含与给定条件匹配的项目。