繁体   English   中英

使用UserManager .Net Core过滤用户角色

[英]Issue filtering users on role with UserManager .Net Core

我在过滤用户角色时遇到问题。 仅对查询进行过滤可以很好地单独使用。

var result =
    _userManager.Users.Where(a =>
    (a.UserName.Contains(query) || a.Email.Contains(query))
    && !a.Roles.Any(b => b.RoleId == roleId));

我得到的错误是

SqlException:在期望条件的上下文中指定的非布尔类型的表达式,在')'附近。

然后我想嗯,嘿,Roles的信息说导航财产,也许我需要包括?

var result =
    _userManager.Users.Include(a=> a.Roles).Where(a =>
    (a.UserName.Contains(query) || a.Email.Contains(query))
    && !a.Roles.Any(b => b.RoleId == roleId));

嗯,它仍然没有像预期的那样工作,但至少还有另一个错误。

SqlException:在“ORDER”附近的预期条件的上下文中指定的非布尔类型的表达式。

所以现在我必须使用这个丑陋的解决方法

var result =
    _userManager.Users.Include(a=> a.Roles).Where(a =>
    (a.UserName.Contains(query) || a.Email.Contains(query))
    /*&& !a.Roles.Any(b => b.RoleId == roleId)*/).ToList();

var result2 = _userManager.GetUsersInRoleAsync(_roleManager.FindByIdAsync(roleId).Result.Name).Result.ToList();

return PartialView("Partials/_UserList", result.Except(result2));

这通过将应用程序从RC1移植到RC2来解决

所以我觉得可以说这是RC1中的一个错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM