2012-12-28 113 views
6

我有一個數據庫,用戶可以屬於多個角色,角色可以有多個權限。這兩種關係都是多對多的。我想查詢並生成一個用戶擁有的Rermissions列表。我試圖通過查詢角色表來查看用戶所屬的角色,然後查詢並查看每個角色包含哪些不同的權限。然而,我似乎無法得到正確的LINQ。實體框架查詢多對多關係

var permissions = RoleRepository.Get() 
    .Where(x => x.Users.Contains(user)) 
    .Select(x => x.Permissions); 

上面的代碼給了我一個權限列表,我只想要一個權限列表。無論如何(在LINQ中)要把所有這些列表聯合起來嗎?還是有更好的方法來完成這個?

+0

上面的代碼給了我一個權限列表的列表,我只想要一個權限列表? – Derek

+0

我認爲[this](http://stackoverflow.com/questions/5587288/many-to-many-query-in-entity-framework-4)將解決您的問題。 – saber

回答

6

使用SelectMany相反,SelectMany平展查詢返回列表的

的列表,以便試試這個:

var permissions = RoleRepository.Get().Where(x => x.Users.Contains(user)) 
           .SelectMany(x => x.Permissions); 

希望這將幫助!

+0

是的,每一個列表拼成一個。非常感謝! –