public async Task <IEnumerable <Place> > Search(int quantity, Province?province, AutonomousCommunity?region) { var placeList = await placesRepository.GetPlaces(province, region); var distribution = GetDistribution(placeList); placeList.RemoveAll(x => !x.Any()); var result = new List <Place>(); for (int i = 0; i < distribution.Count(); i++) { for (int j = 0; j < quantity * distribution.ElementAt(i); j++) { var place = placeList[i].RandomElement(randomProvider); result.Add(place); } } return(result); }