[英]How can I get the list of all admins in MVC5 web application?
我想使用EntityFramework运行查询
Get(u => u.Roles.Contains("Administrator"));
其中“获取”操作与本教程中的操作相同:
我想以这种方式使用它,因为我需要它通过DbContext,因为它离控制器只有一行,并且我想保持请求的一致性。
因此,我的问题是您该怎么做?使所有用户都具有特定角色的最佳方法是什么?
编辑:
这是我最终使用的代码:
var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
string roleId = roleManager.FindByName("Administrator").Id;
return Get(x => x.Roles.Select(y => y.RoleId).Contains(roleId));
另一个答案很接近,但是您首先需要查找Administrators
角色的RoleId
(不幸的是,因为IdentityUserRole
没有Name
属性)。一旦知道了,它就相对简单了。
在下面的示例中,我嵌套了另一个查询,以提取所有包含至少一个IdentityUserRole
和特定RoleId
的Roles
用户
// Add code to look up the appropriate RoleId below.
var roleId = 1;
Get(u => u.Roles.Any(r => r.RoleId == roleId));
如果不确定如何执行查找,请在相关的SO问题上参考此答案
您没有使用.Contains()
打算如何使用它。 查看文档: http : //msdn.microsoft.com/zh-cn/library/system.linq.enumerable.contains( v= vs.100).ASPX
Doc说:“确定序列是否包含指定的元素。” 是否表示T / F。 它不会抓住具有指定角色的用户。 您需要使用.Where()
扩展名。 它可能看起来像这样:
var users = userRepo.Where(u => u.Roles.Contains(r => r.Name == "Administrator"));
因此,现在,您将使用户在其任何角色中包含名称为“ Administrator”的角色
尝试使用U.Roles.Name == "Administrator"
或类似的东西吗?
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.