是否有任何合理有效的方法来获取不属于特定角色的用户列表?
我能看到的唯一方法是
从数据库获取所有用户并执行检入代码
直接转到数据库并回避角色提供程序
答案 0 :(得分:4)
另一种方法是使用方法GetUsersNotInRole()扩展RoleProvider并在那里查询数据库。您还可以将RoleProvider.GetUsersInRole()与MembershipProvider.GetAllUsers()结合使用并找出差异
答案 1 :(得分:4)
您可以获取所有用户列表并从列表中指定角色中提取用户:
var usersInRole = Roles.GetUsersInRole("admin");
var users = Membership.GetAllUsers()
.Cast<MembershipUser>()
.Select(u =>
!usersInRole.Contains(u.UserName)
);
答案 2 :(得分:4)
将Alex中提供的代码中的Select更改为Where将实际返回结果,而不仅仅是true / false。
var usersInRole = Roles.GetUsersInRole("admin");
var users = Membership.GetAllUsers()
.Cast<MembershipUser>()
.Where(u =>
!usersInRole.Contains(u.UserName)
);
答案 3 :(得分:2)
我认为绕过角色提供程序并直接查询数据库没有任何问题。你肯定会以这种方式获得最佳表现。
答案 4 :(得分:1)
发现这种方式,希望这有助于其他人。很容易。
var usernames = Roles.GetUsersInRole("Administrator");
var adminUsers = db.UserProfiles
.Where(x => !usernames.Contains(x.UserName)).ToList();
return View(adminUsers);