.net Linq-主详细信息表-按查找表筛选

.net Linq-主详细信息表-按查找表筛选,.net,linq,entity-framework,.net,Linq,Entity Framework,我有一个简单的master-detail场景,比如带有1..n外键关联的课程和学生,我查询课程表并使用实体框架通过延迟加载访问学生: Dim db As New EFEntities() Dim x = db.COURSES.SingleOrDefault(Function(f) f.ID= 101) 'Access Master Console.WriteLine(x.COURSENAME.ToString()) 'Access Detail F

我有一个简单的master-detail场景,比如带有1..n外键关联的课程和学生,我查询课程表并使用实体框架通过延迟加载访问学生:

    Dim db As New EFEntities()
    Dim x = db.COURSES.SingleOrDefault(Function(f) f.ID= 101)
    'Access Master
    Console.WriteLine(x.COURSENAME.ToString())
    'Access Detail
    For Each e In x.STUDENTS
        Console.WriteLine(e.STUDENTNAME)
    Next
但是现在我只希望返回的学生有一个特定的值,称之为CATEGORY assigned。有效值存储在查找表中。因此,我想我需要一个子选择,比如从任意表中选择值的WHERE STUDENTS.CATEGORY,但我不知道舒尔如何将其添加到现有查询中

var catIds= new List<long>{cat1Id, cat2Id};
var filteredStudents = x.Students.Where(s=>catIds.Any(s.Category.CategoryId));
在C语言中,您需要类似的东西。

您可以这样使用:

Dim CATID=…'在这里获取您的类别ID。 Dim students=来自上下文中的s。students_ 其中catIds.Containss.CategoryId选择s
在EF中,这将仅抛出在此上下文中支持的基本类型“如Int32、String和Guid”。在这种情况下,您可以使用类别ID列表进行比较。