如何使用搜索字符串在mvc控制器中的搜索功能



我试图在控制器方法中实现搜索功能,但由于无法使用";获取"子句,它抛出和类型转换错误。我在上出错

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);
}