0

我有一个简单的主细节场景(例如具有 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)。有效值存储在查找表中。所以我想我需要一个子选择,WHERE STUDENTS.CATEGORY IN (SELECT VALUE FROM ANYTABLE)但我不知道如何将它添加到我现有的查询中?

4

2 回答 2

0
var catIds= new List<long>{cat1Id, cat2Id};
var filteredStudents = x.Students.Where(s=>catIds.Any(s.Category.CategoryId));

在 C# 中,您将需要类似的东西。

于 2012-08-18T16:24:25.317 回答
0

您可以像这样使用Contains()

Dim catIds = ... 'Get your category Ids here.
Dim students = From s In context.Students _
               Where catIds.Contains(s.CategoryId) Select s
于 2012-08-20T08:30:33.220 回答