Вложенный linq - где x == перечисляемый - PullRequest
2 голосов
/ 06 августа 2010

Я новичок в терминологии Linq и SQL - может кто-нибудь сказать мне, почему это не работает (синтаксис неправильный - я не могу сравнить u.UserID int с Enumerable)

var projectUsers = from u in SimpleRepository.All<User>()
                   where u.UserID == (from i in SimpleRepository.All<ProjectUser>()
                                      where i.ProjectID == p.ProjectID
                                      select i.UserID)
                   select u;

В «английском» мы бы «выбрали каждого пользователя, где его идентификатор совпадает с любым из (userID из коллекции ProjectUser где projectID == x), и дали бы мне коллекцию пользователей».

Я также используюsubsonic3 с SimpleRepository, если это имеет значение (или позволяет мне использовать что-то другое, чтобы сделать это проще).

1 Ответ

2 голосов
/ 06 августа 2010
var projectUsers = from u in SimpleRepository.All<User>()
               where (from i in SimpleRepository.All<ProjectUser>()
                                  where i.ProjectID == p.ProjectID
                                  select i.UserID).Contains(u.UserID)
               select u;

или

var projectUsers = from u in SimpleRepository.All<User>()
               join u2 in SimpleRepository.All<ProjectUser>() on u.UserID equals u2.UserId
               where u2.ProjectID == p.ProjectID
               select u;
...