我添加了 3 个角色:
- 管理员
- 职员
- 挂号的
现在我想显示所有Registered
用户的列表。恐怕我没有得到身份系统,因为我正在尝试做这样的事情:
剧透警报:不工作的代码
var listOfNames = _unitOfWork.UserRepository.All()
.Where(u => u.Roles.Contains("Registered"))
.ToList();
这显然不起作用,所以我去寻找答案。不幸的是,我没有得到任何东西。我能找到的最接近的是 Scott Allen 的一篇文章,他提到IUserRoleStore
它具有以下实现:
- 将用户添加到角色
- 获取用户的所有角色
- 检查用户是否具有特定角色
- 从角色中删除用户
但是,仍然没有得到它:/
我也尝试过这个问题中的方法,但是Roles.Select(r => r.Name).Contains("client")
因为找不到 Name 属性而不起作用?
如何获取此 ApplicationUser 对象列表?
更新
肖恩的回答帮助我更深入地挖掘。我不确定这是最好的方法,但它可以满足我的需要。
var users = context.Users;
var roleUsers = context.Roles.Single(one => one.Name == "Registered").Users;
names = (from r in roleUsers
join u in users on r.UserId equals u.Id
select u.UserName).ToList();
如果这效率低下,我很想听听为什么以及如何改进它。