我正在尝试向我可以按名称搜索用户的方法添加搜索功能。到目前为止,我已经尝试了这个但是我收到了一个我不完全理解的错误:
public async Task<IActionResult> ListUsers(string searchString)
{
var AllUsers = _application.Users.ToList();
UsersAndRolesViewModel UserAndRoleViewModel = new UsersAndRolesViewModel();
List<UserAndRoleViewModel> AllUsersAndRoles = new List<UserAndRoleViewModel>();
foreach (var usr in AllUsers)
{
var model = new UserAndRoleViewModel
{
Id = usr.Id,
Email = usr.Email,
Roles = await _usermanager.GetRolesAsync(usr),
PhoneNumber = usr.PhoneNumber,
};
AllUsersAndRoles.Add(model);
}
UserAndRoleViewModel.UserAndRole = AllUsersAndRoles;
if (!String.IsNullOrEmpty(searchString))
{
UserAndRoleViewModel = AllUsers.Where(s => s.FullName.Contains(searchString));
}
return View(UserAndRoleViewModel);
}
这产生的错误是:
无法隐式转换类型&#39;
System.Collections.Generic.IEnumerable<ims.Models.ApplicationUser>
&#39; to&#39; ims.Models.AdminViewModels.UsersAndRolesViewModel&#39;。存在显式转换(您是否错过了演员?)
此错误在
上生成UserAndRoleViewModel = AllUsers.Where(s => s.FullName.Contains(searchString));
答案 0 :(得分:0)
这只是由基本类型不匹配引起的:UserAndRoleViewModel
属于UsersAndRolesViewModel
类型。 AllUsers.Where(...)
的类型为IEnumerable<>
。我怀疑您要将结果分配给UserAndRoleViewModel
。
答案 1 :(得分:0)
如果您尝试将用户列表返回到View,请尝试使用
if (!String.IsNullOrEmpty(searchString))
{
List<UserAndRoleViewModel > UserRoles = AllUsers.Where(s => s.FullName.Contains(searchString)).ToList();
}
或者,如果您想要返回具有特定名称的单个用户,请尝试以下
if (!String.IsNullOrEmpty(searchString))
{
var UserRoles = AllUsers.SingleOrDefault(s => s.FullName == searchString);
}
AllUsers.Where(s =&gt; s.FullName.Contains(searchString))
返回用户列表。但是你把它分配给了一个模型。