在 ASP.NET 核心 3.0 中,当我应用 Except() 方法时出现以下异常
In ASP.NET core 3.0, I get the following exception when I apply the Except() method
InvalidOperationException: LINQ 表达式的处理 'Except
我正在使用 ASP.NET 核心 3.0 中的身份系统来制作网站。我有一个用户列表,其中一些已分配给角色。基本上,我正在尝试获取未分配给特定角色的用户列表。
我实现这个的方法是让所有用户减去已经分配给角色的用户。我试图在 Except() 方法的帮助下做到这一点。以下是我的操作方法的基础知识:
[HttpGet]
public async Task<IActionResult> AddUsersToRole(string roleName)
{
IdentityRole role = await roleManager.FindByNameAsync(roleName);
if (role != null)
{
IList<ApplicationUser> usersInRole = await userManager.GetUsersInRoleAsync(role.Name);
IQueryable<ApplicationUser> usersNotInRole = userManager.Users.Except(usersInRole);
List<AddUsersToRoleViewModel> models = new List<AddUsersToRoleViewModel>();
// Exception is thrown here...
// Copy data to ViewModel
foreach (var user in usersNotInRole)
{
models.Add(new AddUsersToRoleViewModel { UserId = user.Id });
}
return View(models);
}
当我尝试从 usersNotInRole 对象读取数据时抛出异常。即使当我删除 ViewModel 并将 usersNotInRole 对象传递给 View 时,我仍然会遇到异常。有任何想法吗?我是编程新手。
查询提供程序无法将 linq 表达式转换为查询。
在 foreach
处抛出异常,因为那是针对源枚举和执行可查询对象的时候。
使用AsEnumerable
将用户载入内存。
var usersNotInRole = userManager.Users.AsEnumerable().Except(usersInRole);
InvalidOperationException: LINQ 表达式的处理 'Except
我正在使用 ASP.NET 核心 3.0 中的身份系统来制作网站。我有一个用户列表,其中一些已分配给角色。基本上,我正在尝试获取未分配给特定角色的用户列表。
我实现这个的方法是让所有用户减去已经分配给角色的用户。我试图在 Except() 方法的帮助下做到这一点。以下是我的操作方法的基础知识:
[HttpGet]
public async Task<IActionResult> AddUsersToRole(string roleName)
{
IdentityRole role = await roleManager.FindByNameAsync(roleName);
if (role != null)
{
IList<ApplicationUser> usersInRole = await userManager.GetUsersInRoleAsync(role.Name);
IQueryable<ApplicationUser> usersNotInRole = userManager.Users.Except(usersInRole);
List<AddUsersToRoleViewModel> models = new List<AddUsersToRoleViewModel>();
// Exception is thrown here...
// Copy data to ViewModel
foreach (var user in usersNotInRole)
{
models.Add(new AddUsersToRoleViewModel { UserId = user.Id });
}
return View(models);
}
当我尝试从 usersNotInRole 对象读取数据时抛出异常。即使当我删除 ViewModel 并将 usersNotInRole 对象传递给 View 时,我仍然会遇到异常。有任何想法吗?我是编程新手。
查询提供程序无法将 linq 表达式转换为查询。
在 foreach
处抛出异常,因为那是针对源枚举和执行可查询对象的时候。
使用AsEnumerable
将用户载入内存。
var usersNotInRole = userManager.Users.AsEnumerable().Except(usersInRole);