[英]Asp.Net core identity - UserManager.Users.Any() returns always false
[英]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.