我正在尝试根据应用程序中的特定角色查找所有用户。我目前有两个角色管理员和用户。当我尝试使用以下 linq 查询返回具有"用户"角色的用户列表时:
var users = context.Users
.Where(u => u.Roles.Select(r => r.RoleId).Contains("User")).ToList();
它返回 0 个用户。我在这里看过类似的问题,但其中许多现在已经过时了。例如,我知道 RoleID 是一个散列键,我正在搜索的是纯文本"用户"。
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();