Linq запрос родительской дочерней группы проблема - PullRequest
1 голос
/ 03 апреля 2012

У меня есть следующие таблицы

Actions    
  ActionID   Action  NextActionID

    1        Submit      2
    2        Forward     3
    3        Approve    NULL

UserActionRights
UserID ActionID
  5     1
  6     2
  7     3
  8     2

Я хочу вывод, как этот

Action(Key) UserIDs(List)
  1          6
             7

  2          7
  3         "Empty List"

Я попытался сделать следующее:

(from a in actions join uar in UserActionRights on a.NextActionID equals uar.ActionID
Select new 
{
  Action=a.ActionID,
  UserIDs=uar.UserID

}).ToList().AsEnumerable().GroupBy(x => x.ActionID).Select(y => new 
                       {
                               Action = y.Key,
                               UserIDs = y.Select(tp=>tp.UserID)
}).ToList()

Теперь, когда пользователь с ID = 5 вошел в систему, я получаю пустой вывод, поскольку он не имеет права на ActionID = 2,3. Мне нужно изменить запрос, чтобы получить желаемый результат

Ответы [ 2 ]

1 голос
/ 04 апреля 2012

Потребовалось некоторое время, чтобы прийти к выводу, что вам нужен список пользователей, которым разрешено выполнять действия после ключевого действия:

UserActionRights.Select(u => new
    { ActionId = u.ActionId,
      UserIds = UserActionRights.Where(u1 => u1.ActionId > u.ActionId)
        .Select(u1 => u1.UserId).ToList()
    }); 

Надеюсь, я вас хорошо понял.

0 голосов
/ 03 апреля 2012
Users.GroupBy(u => u.Action.Id, u => u.Id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...