bool isUserInAnyTeam = course.Teams.Any(t => t.Users.Any(u => u.Id == user.Id));
Это LINQ to Objects, потому что вы запрашиваете коллекцию Teams
в памяти. Таким образом, предполагается, что коллекция Teams
уже загружена или будет загружена лениво. Если он не загружен и вы не используете отложенную загрузку, вы можете создать запрос к базе данных для коллекции:
В EF 4.1 с DbContext:
bool isUserInAnyTeam = dbContext.Entry(course).Collection(c => c.Teams).Query()
.Any(t => t.Users.Any(u => u.Id == user.Id));
Или в EF 4.0:
bool isUserInAnyTeam = course.Teams.CreateSourceQuery()
.Any(t => t.Users.Any(u => u.Id == user.Id));
Teams
должен иметь тип EntityCollection<Team>
в последнем случае.
Другой способ - запрос с нуля:
bool isUserInAnyTeamOfCourse = context.Courses.Any(
c => c.Id == course.Id && c.Teams.Any(t => t.Users.Any(u => u.Id == user.Id)));