根据特定角色查找用户

时间:2017-03-28 14:04:50

标签: asp.net-mvc linq asp.net-identity

我正在尝试根据应用程序中的特定角色查找所有用户。我目前有两个角色Admin和User。当我尝试使用以下linq查询返回具有“User”角色的用户列表时:

var users = context.Users
                .Where(u => u.Roles.Select(r => r.RoleId).Contains("User")).ToList();

它返回0个用户。我在这里看过类似的问题,但其中很多都已经过时了。我知道RoleID例如是一个哈希键,我要搜索的是纯文本“User”。

1 个答案:

答案 0 :(得分:3)

RoleId与实际的角色名称字符串不同,这就是为什么您没有获得任何匹配的原因。您需要这样做的方式是:

var roleId = context.Roles.Where(m => m.Name == "User").Select(m => m.Id).SingleOrDefault();

然后:

var users = context.Users
            .Where(u => u.Roles.Any(r => r.RoleId == roleId)).ToList();