Asp.net mvc ASP.NETMVC按标识筛选
我喜欢使用ASP.Net身份角色筛选实体。我使用了ASP.NET 4.5 MCV EF6 我的桌子是: 导航导航ID、导航名称等 导航角色导航ID、RoleId、BlogRigth 导航中一个角色的我的筛选器为:Asp.net mvc ASP.NETMVC按标识筛选,asp.net-mvc,linq,asp.net-identity,Asp.net Mvc,Linq,Asp.net Identity,我喜欢使用ASP.Net身份角色筛选实体。我使用了ASP.NET 4.5 MCV EF6 我的桌子是: 导航导航ID、导航名称等 导航角色导航ID、RoleId、BlogRigth 导航中一个角色的我的筛选器为: var Nav= db.Navigations .Join(db.NavigationRoles ,n => n.NavigationId
var Nav= db.Navigations
.Join(db.NavigationRoles
,n => n.NavigationId
,nr =>nr.NavigationId
,(n ,nr) => new { n , nr })
.Where(x => x.nr.RoleId.Equals("dbd7d691-......"))
.Where(x => x.n.ParentId==1)
.Select(x=> x.n )
.Distinct()
.ToList() ;
我的用户可以有一个角色集合,所以我喜欢按这些集合进行筛选。
我通过以下方式获得角色集合:
var UserRoleIDs = UserManager.FindById(UserId).Roles.Select(ri=> ri.RoleId);
我怎样才能以一种好的方式将这些链接起来
总的来说,我对LINQ、Lambda和MVC还是新手。如果有人有办法改进此代码,请随时添加您的视图。您的技巧是在用户角色列表中使用。下面是一个关于实体的示例
var UserRoleIDs = UserManager.FindById(UserId).Roles.Select(ri => ri.RoleId);
var query = from navRoles in db.NavigationRoles
join nav in db.Navigations on navRoles.NavigationId equals nav.NavigationId
where UserRoleIDs.Contains(navRoles.RoleId)
select nav;
var distinct = query.Distinct().ToList();
我没有使用LINQ express,因为我发现在涉及连接时编写lambda表达式要容易得多
希望这有帮助 非常感谢,起初我认为这不是函数,但当我检查我的表时,一切都正常。伟大的