InvalidOperationException: Обработка выражения LINQ 'Кроме
Я использую систему удостоверений в ASP.NET core 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, я все равно получаю исключение. Есть идеи? Я новичок в программировании.