c# - 连接两个M :N relations in EntityFramework

标签 c# linq entity-framework orm

看看下面我的模型,

  1. 每个用户有 n 个角色
  2. 每个角色有 n 个权限/每个权限有 n 个角色

我正在尝试获取用户权限,以便能够对其执行group by, 我怎样才能做到呢?

My data model

我打算编写一个如下所示的 LINQ 查询:

from uRole in context.Users.Single(u => u.Id == userId).Roles
     join p in context.Permission.Where(p => p.Type == ModelEnums.PermissionType.Module)

我不知道如何编写查询,有人可以指导我吗?

最佳答案

要获取所有用户的权限,您可以使用 SelectMany扩展方法:

var permissions=context.Users.Single(u => u.Id == userId).Roles.SelectMany(r=>r.Permissions).Distinct();

也可调用Distinct删除重复项的扩展方法。

关于c# - 连接两个M :N relations in EntityFramework,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31610052/

相关文章:

c# - Canvas 中的 MediaElement 不会拉伸(stretch)以填充

asp.net - 如何使用 EF 在开发数据库和实时数据库之间切换?

c# - 在 VS 2015 和 EF7 从模型生成 SQLite 数据库

c# - 使用 Linq 返回节点中的属性列表

c# - 如何使用 Repository Pattern、Service Pattern、UnitOfWork、ORM(EF、NHibernate 等)用 ASP MVC 构建项目?

c# - 队列中有新项目时如何出队

c# - 使用命名空间将类序列化为 XML

c# - 如何在 xaml 和 resx 中使用 GNU gettext

c# - 使用 FindLast 之类的方法时如何区分找到的 0 和默认值(int)?

c# - 在 Where 方法中应用搜索模式?