使用Entity Framework查询多对多对多关系

6

我有一个数据库,用户可以属于多个角色,角色可以拥有多个权限。这两种关系都是多对多的。我想查询并生成用户所拥有的权限列表。我尝试通过查询Roles表来查看用户是哪些角色的成员,然后查询每个角色包含哪些不同的权限。但是我似乎无法正确使用LINQ。

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

以上代码给出了一个权限列表的列表,我只想要一个权限列表。有没有办法(在LINQ中)将所有这些列表合并?或者有更好的方法来完成这个任务吗?


以上代码给我一个权限列表的列表,我只想要一个权限列表? - Derek
我认为这个链接可以解决你的问题。 - Saber Amani
1个回答

6

请使用 SelectMany,它可以展平返回列表列表的查询结果。

所以请尝试这样做:

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

希望这能有所帮助!!

把每个列表都压平成一个列表。非常感谢! - Stefan Bossbaly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接