public async Task <IList <Movie> > SearchMovies(Interfaces.Model.SearchParameters searchParameters) { Microsoft.Azure.Search.Models.SearchParameters parameters; DocumentSearchResult <Movie> results; IList <Movie> resultSet = new List <Movie>(); resultSet = await GetMovieFromCache(searchParameters.SearchTerm); if (resultSet == null || !resultSet.Any()) { resultSet = new List <Movie>(); ISearchIndexClient indexClientForQueries = await _searchProvider.CreateSearchIndexAsync(_searchServiceName, _adminApiKey, _indexName); parameters = new Microsoft.Azure.Search.Models.SearchParameters() { Select = searchParameters.Select, Filter = searchParameters.Filter, OrderBy = searchParameters.OrderBy, Top = searchParameters.Top, }; results = await indexClientForQueries.Documents.SearchAsync <Movie>(searchParameters.SearchTerm, parameters); results.Results.ToList().ForEach(i => { resultSet.Add(i.Document); }); StoreSeachCache(searchParameters.SearchTerm, resultSet); } return(resultSet); }