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

How to use Search functionality in mvc controller with searchstring

我正在尝试在控制器方法中实现搜索功能,但我无法使用“Get”子句,它抛出类型转换错误。我在

收到错误

getAll = getAll.Content.Where(a => a.Firstname.Contains(searchString) || a.Lastname.Contains(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

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