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

次のように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 に答える
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 に答える