嵌套的linq - 其中x ==可枚举

时间:2010-08-06 01:34:29

标签: c# linq c#-3.0 subsonic3

我是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;

在“英语”中,我们将“选择其id匹配的每个用户(来自ProjectUser集合的userID,其中projectID == x)并给我一组用户”。

我也使用带有SimpleRepository的subsonic3,如果这有所不同(或允许我使用其他东西来使这更容易)。

1 个答案:

答案 0 :(得分:2)

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;