C# 在EntityFramework中连接两个M:N关系

C# 在EntityFramework中连接两个M:N关系,c#,linq,entity-framework,orm,C#,Linq,Entity Framework,Orm,看看我下面的模型 每个用户有n个角色 每个角色有n个权限/每个权限有n个角色 我正在尝试获得用户权限,以便能够在其上执行组, 我怎么做呢 我打算编写一个LINQ查询,如下所示: from uRole in context.Users.Single(u => u.Id == userId).Roles join p in context.Permission.Where(p => p.Type == ModelEnums.PermissionType.Module) 我不

看看我下面的模型

  • 每个用户有n个角色
  • 每个角色有n个权限/每个权限有n个角色
  • 我正在尝试获得用户权限,以便能够在其上执行组, 我怎么做呢

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

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

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

    要获得所有用户权限,可以使用扩展方法:

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

    还可以调用扩展方法来删除重复项

    那么,你为什么不编写和测试查询结果并告诉我们结果/问题?问题是我不知道如何编写查询。作为EF的新手,我从来没有注意到有很多!你救了我一周,我不知道该怎么说谢谢:)