菜单类
public class BaseMenu
{
[Key]
public int Id { get; set; }
[Display(Name = "名称")]
[Required(ErrorMessage = "不能为空!")]
[MaxLength(50, ErrorMessage = "长度不能超过50个字符!")]
public string Name { get; set; }
public virtual ICollection<BaseRole> Roles { get; set; }
}
角色类
public class BaseRole
{
[Key]
public int Id { get; set; }
[Display(Name = "名称")]
[Required(ErrorMessage = "不能为空!")]
[MaxLength(50, ErrorMessage = "长度不能超过50个字符!")]
public string Name { get; set; }
public virtual ICollection<BaseUser> Users { get; set; }
public virtual ICollection<BaseMenu> Menus { get; set; }
}
用户类
public class BaseUser
{
[Key]
public int Id { get; set; }
[Display(Name = "用户名")]
[Required(ErrorMessage = "用户名不能为空!")]
[MaxLength(50, ErrorMessage = "长度不能超过50个字符!")]
public string UserName { get; set; }
public virtual ICollection<BaseRole> Roles { get; set; }
}
请问一下,我需要怎么根据用户Id来获取用户所属的角色下面的菜单呢?
用户与角色是多对多关系,菜单对角色是多对多关系。
请各位帮下忙,纠结好久了。
------解决方案--------------------
var roleIds= user.Roles.Select(r=>r.Id);
var menus = menu.Where(m=>m.Roles.Any(r=>roleIds.Contains(r.Id)));