Подзапрос с Linq to Sql - PullRequest
       3

Подзапрос с Linq to Sql

0 голосов
/ 26 марта 2011

У меня следующий оператор LINQ.Как мне изменить это, чтобы я получил GroupID только в подзапросе.Мой синтаксис здесь не работает.

А также только отдельные пользователи.

from u in Users 
join ug in UserGroups on u.UserID equals ug.UserID
where ug.GroupID == (from igr in UserGroups where igr.UserID == 1 select igr.GroupID)
select u

Ответы [ 3 ]

1 голос
/ 26 марта 2011

Вот как это закончилось.

var query = (from u in _dbctx.Users
    join ug in _dbctx.UserGroups on u.UserID equals ug.UserID
    where _dbctx.UserGroups.Any(igr => igr.GroupID == ug.GroupID && igr.UserID == 1)
    select GetUser(u)).Distinct();
1 голос
/ 26 марта 2011

Я бы разбил его на два отдельных запроса для удобства чтения, но здесь идет

var group = from igr in UserGroup
            where irg.UserID == 1
            select igr.GroupID;

var result = from u in Users 
              join ug in UserGroups on u.UserID equals ug.UersID
              into x
              where group.Contains( x.GroupID )
              select x;

Как один запрос, я считаю, что он будет работать следующим образом

var result = from u in Users 
              join ug in UserGroups on u.UserID equals ug.UersID
              into x
              where 
                (from igr in UserGroup
                 where irg.UserID == 1
                 select igr.GroupID).Contains( x.GroupID )
              select x;
0 голосов
/ 26 марта 2011
    from u in Users 
    join ug in UserGroups on u.UserID equals ug.UserID
    where ug.GroupID == (from igr in UserGroups where igr.UserID == 1 select  igr.GroupID).FirstOrDefault()
    select u

внутренний запрос должен возвращать ровно одно значение

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...