c# - Entity Framework 查询多对多关系

标签 c# .net sql-server entity-framework many-to-many

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

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

上面的代码给了我一个权限列表,我只想要一个权限列表。无论如何(在 LINQ 中)是否可以合并所有这些列表?还是有更好的方法来实现这一点?

最佳答案

使用 SelectMany 相反,SelectMany 扁平化返回列表列表的查询

所以试试这个:

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

希望这会有所帮助!!

关于c# - Entity Framework 查询多对多关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14072676/

相关文章:

c# - 在 C# 中模拟 ImageLayout.Zoom

c# - 热带矩阵乘法

c# - 拉丁语的 CultureInfo

C# 程序想要选择数据 <= 23 :59:59 but ends up selecting data with 00:00:00 timestamp as well

python - pyodbc.ProgrammingError : ('The SQL contains 0 parameter markers, but 3 parameters were supplied' , 'HY000' )

sql - SQL Server Compact 与 SQL Server 和 SQL Server Standard 之间有什么区别?

c# - 在标签中显示整数

c# - 如何在 VS C# 控制台应用程序中使用引用的 c# dll 代码

c# - 获取当前运行的任务

.net - 最佳实践 - WPF 自定义控件库 - 组织文件、文件夹和命名空间