public async Task <IEnumerable <string> > GetDiseasesBySympthomsAsync(string[] sympthomNames) { List <string> diseases = new List <string>(); using (UnitOfWorkProvider.Create()) { var allDiseases = await diseaseService.ListAllAsync(); foreach (var disease in allDiseases.Items) { var sympthomsForDisease = await diseaseService.GetSympthomsForDiseaseAsync(disease.Id); if (sympthomNames.All(sympthom => sympthomsForDisease.Contains(sympthom))) { diseases.Add(disease.Name); } } return(diseases); } }