我试图在控制器方法中实现搜索功能,但由于无法使用";获取"子句,它抛出和类型转换错误。我在上出错
getAll=getAll.Content.Where(a=>a.Firstname.Contains(searchString(||a.Lastname.Continus(searchString((;
.控制器方法
[HttpGet]
public async Task<IActionResult> Index(UserViewModel userVM)
{
var userData = await _userSessionCache.GetUserSessionWithUserIdAsync();
var tenantClientId = userData.TenantClientId;
var getAll = await _userApiService.GetAll(tenantClientId);
var searchString = userVM.SearchString;
if(!string.IsNullOrEmpty(searchString))
{
getAll = getAll.Content.Where(a => a.Firstname.Contains(searchString) || a.Lastname.Contains(searchString));
}
if (!getAll.IsSuccessful)
{
throw new System.Exception("Unable to get User Data");
}
var dataList = getAll.Content;
var vm = new UserViewModel();
vm.SetUser(dataList);
return View(vm);
}
.cs
任务<ApiRespons<列表>gt;GetAll(Guid tenantClientId(;
getAll -> ApiResponse<List>
getAll.Content -> List
getAll.Content.Where(...) -> IEnumerable
所以你尝试
ApiResponse<List> getAll = IEnumerable;
您有一个类型转换错误,因为IEnumerable
无法强制转换为ApiResponse<List>
。
您应该尝试使用列表变量:
[HttpGet]
public async Task<IActionResult> Index(UserViewModel userVM)
{
var userData = await _userSessionCache.GetUserSessionWithUserIdAsync();
var tenantClientId = userData.TenantClientId;
var getAll = await _userApiService.GetAll(tenantClientId);
var searchString = userVM.SearchString;
if (!getAll.IsSuccessful)
{
throw new System.Exception("Unable to get User Data");
}
var dataList = getAll.Content;
if(!string.IsNullOrEmpty(searchString))
{
dataList = dataList
.Where(a => a.Firstname.Contains(searchString) ||
a.Lastname.Contains(searchString))
.ToList();
}
var vm = new UserViewModel();
vm.SetUser(dataList);
return View(vm);
}