我有一个简单的主要细节场景(如课程和具有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)
这样的子选择,但我不知道如何将它添加到我现有的查询中?
答案 0 :(得分:0)
var catIds= new List<long>{cat1Id, cat2Id};
var filteredStudents = x.Students.Where(s=>catIds.Any(s.Category.CategoryId));
在C#中,你需要类似的东西。
答案 1 :(得分:0)
您可以像这样使用Contains():
Dim catIds = ... 'Get your category Ids here.
Dim students = From s In context.Students _
Where catIds.Contains(s.CategoryId) Select s