2012-04-03 92 views
1

我有以下表Linq查詢父子分組問題

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的權限。我需要修改查詢,以獲得所需的結果

回答

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

它採取了一些思維來推斷,你需要的用戶特權做關鍵動作之後的操作的列表:

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

我希望我能很好地理解你。