public async Task <ActionResult <IEnumerable <AddressBook> > > SearchAddressBook(string search) { try { var result = CacheManager <List <AddressBook> > .Get(_memoryCache, cacheKey); if (result == null || result.Count == 0) { var addressBooks = await _addressBookRepository.GetAddressBookList(); if (addressBooks == null) { return(NotFound()); } var searchResults = addressBooks.Where(s => s.FirstName.Contains(search) || s.LastName.Contains(search) || s.MobileNumber.Contains(search) || s.HomeNumber.Contains(search) || s.OfficeNumber.Contains(search) || s.EmailAddress.Contains(search)).ToList(); return(Ok(searchResults)); } var searchResult = result.Where(s => s.FirstName.Contains(search) || s.LastName.Contains(search) || s.MobileNumber.Contains(search) || s.HomeNumber.Contains(search) || s.OfficeNumber.Contains(search) || s.EmailAddress.Contains(search)).ToList(); return(Ok(searchResult)); } catch (Exception ex) { //Logging TO DO return(BadRequest()); } }