1

在以下情况下,我对 LINQ 查询有疑问:

我有 Activity 和 ActivityTeacher 两个表和一些教师的列表。

 Activity Table

  ActivityID      Date        Class
  1            4/4/2012      1
  2            4/5/2013      2
  3            4/6/2013      5
  4            5/6/2013      2
  5            5/16/2013     1
  6            5/20/2013     8
  7            5/21/2013     7
  8            6/22/2013     6
  9            8/10/2013     5
  10           8/12/2013     4


  ActivityTeacher Table

  ActivityID      TeacherID
  1                  2
  1                  3
  1                  4                 
  2                  6
  3                  6
  3                  6
  3                  4
  2                  5
  4                  2
  4                  3
  4                  6
  5                  8
  5                  7
  5                  6
  6                  6
  6                  7
  6                  9
  6                  10
  6                  1
  6                  2
  7                  2
  7                  8
  7                  9
  7                  10
  8                  3
  8                  4
  8                  6
  8                  7
  9                  10
  9                  3
  9                  2
  10                 1
  10                 2 

List of Teachers={2,3,4} 现在我想根据 List of Teachers={2,3,4} 从 Activity 中选择记录,而不使用 foreach 循环。

4

1 回答 1

2

Activity实体应该有一个Teachers可以使用的导航属性:

context.Activities
       .Where(x => listOfTeachers.Contains(x.Teachers.Select(t => t.TeacherId)));

如果listOfTeachers包含三个 ID 2、3、4,则此查询应转换为类似于以下内容的 SQL:

select a.*
from Activity a
  inner join ActivityTeacher at
      on a.activityid = at.activityid
where at.teacherid in (2, 3, 4);
于 2013-07-24T13:10:32.227 回答