выберите ключ после группы - PullRequest
0 голосов
/ 01 июня 2018

Я пытаюсь выбрать все эти ключи после того, как я выполню групповую работу.Это работает, если я помещаю группу в переменную, а затем выполняю выборку для переменной, но не сразу после группы.Я не знаю почему.

Это не работает:

var pureUsers = from u in userContext.Users
    join ur in userContext.UserRoles on u.UserID equals ur.UserID
    join r in userContext.Roles on ur.RoleID equals r.RoleID
    join sm in userContext.SystemMasters on r.SystemMasterID equals sm.SystemMasterID
    where sm.SystemName == "PURE"
    group ur.UserRoleID by u.SAPID into g
    select g.Key;

Это дает мне ошибку, «строка» не содержит определения «Ключ» и не имеет метода расширения«Ключ», принимающий первый аргумент типа «строка», может быть найден "

Однако он работает так:

var pureUsers = from u in userContext.Users
    join ur in userContext.UserRoles on u.UserID equals ur.UserID
    join r in userContext.Roles on ur.RoleID equals r.RoleID
    join sm in userContext.SystemMasters on r.SystemMasterID equals sm.SystemMasterID
    where sm.SystemName == "PURE"
    group ur.UserRoleID by u.SAPID

var happy = pureUsers.Select(x => x.Key);

Я также пытался:

var pureUsers = (from u in userContext.Users
    join ur in userContext.UserRoles on u.UserID equals ur.UserID
    join r in userContext.Roles on ur.RoleID equals r.RoleID
    join sm in userContext.SystemMasters on r.SystemMasterID equals sm.SystemMasterID
    where sm.SystemName == "PURE"
    group ur.UserRoleID by u.SAPID).Select(x => x.Key);

Это дает мне ту же ошибку.Я не вижу, чем это отличается от того, чтобы поместить его в pureUsers, а затем делать выборку.Кроме того, если есть лучший способ сделать это без участия группы, пожалуйста, скажите мне.Я группирую его по SAPID, потому что у пользователей может быть много UserRoles, и мне нужен список Users.SAPID, в котором каждый SAPID отображается один раз.

1 Ответ

0 голосов
/ 01 июня 2018

Как насчет:

var pureUsers = (from u in userContext.Users
                 join ur in userContext.UserRoles on u.UserID equals ur.UserID
                 join r in userContext.Roles on ur.RoleID equals r.RoleID
                 join sm in userContext.SystemMasters on r.SystemMasterID equals sm.SystemMasterID
                 where sm.SystemName == "PURE"
                 select u.SAPID).Distinct();
...