public async Task <List <ProductModel> > Sort(string sortOption) { List <ProductModel> sortedProductList = null; if (!string.IsNullOrEmpty(sortOption)) { sortOption = sortOption.ToLower(); var productList = await _externalService.GetProductList(); switch (sortOption) { case "low": sortedProductList = productList.OrderBy(p => p.Price).ToList(); break; case "high": sortedProductList = productList.OrderByDescending(p => p.Price).ToList(); break; case "recommended": sortedProductList = GetRecommendedProductList(productList).Result; break; case "ascending": sortedProductList = productList.OrderBy(p => p.Name).ToList(); break; case "descending": sortedProductList = productList.OrderByDescending(p => p.Name).ToList(); break; default: break; } } return(sortedProductList); }