在ASP中。NET Core 2.2 MVC我正在尝试获得一个特定角色中所有用户的列表
Fx。名为"管理员"的角色中的所有用户的列表:
var idsWithPermission = _userManager.GetUsersInRoleAsync("Admin").Result;
var users = _db.ApplicationUser.Where(u => idsWithPermission.Contains(u.Id)).ToListAsync();
return(users);
编译器在此处"u.Id"失败:idsWithPermission.Contains(u.Id)
错误:参数1:无法从"字符串"转换为Microsoft。AspNetCore。身份身份用户
这是一个新手问题,所以对于鲨鱼来说可能很简单:-(提前非常感谢。。。
GetUsersInRoleAsync
返回IdentityUser
对象的列表。要获得ID列表,您需要访问这些对象的Id
属性。
// Get a list of users in the role
var usersWithPermission = _userManager.GetUsersInRoleAsync("Admin").Result;
// Then get a list of the ids of these users
var idsWithPermission = usersWithPermission.Select(u => u.Id);
// Now get the users in our database with the same ids
var users = _db.ApplicationUser.Where(u => idsWithPermission.Contains(u.Id)).ToListAsync();
return users;
请注意,不建议在async
方法上使用.Result
,因为这可能会导致死锁。相反,使用await
并使您的方法成为async
。
还要注意,根据您的设置,如果ApplicationUser
继承自IdentityUser
,并且正确配置了标识系统,则GetUsersInRoleAsync
将已经返回ApplicationUser
对象,您只需要将它们强制转换为正确的类型:
// Get a list of users in the role
var usersWithPermission = _userManager.GetUsersInRoleAsync("Admin").Result;
var users = usersWithPermission.OfType<ApplicationUser>();
return users;