Linq查询父子分组问题

时间:2012-04-03 11:02:37

标签: asp.net-mvc linq entity-framework entity-framework-4

我有以下表格

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 个答案:

答案 0 :(得分:1)

需要一些思考来推断您需要一个特权用户列表来执行关键操作之后的操作:

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

我希望我能理解你。

答案 1 :(得分:0)

Users.GroupBy(u => u.Action.Id, u => u.Id)