我有一个Web API方法,用于搜索名为' Patients'的EF对象。患者有一个名为Referrals的导航属性(一个患者可以有很多推荐),每个推荐都有一个名为' ConsultantID'的整数属性。
我想返回所有具有ConsultantID值的推荐人的患者,这些推荐人的顾问ID值在一个名为'顾问'但我无法理解所需的逻辑。我现在有下面的内容,但它并没有像我预期的那样工作,推荐。任何电话似乎都在表现出现场' Exists'打电话而不是我期待的连接行为。
public List<HelperCode.DTO.SearchResult> SearchPatients(string firstname, string surname, [FromUri] int[] consultants)
{
IQueryable<Patient> results = db.Patients;
List<HelperCode.DTO.SearchResult> output = new List<HelperCode.DTO.SearchResult>();
List<int> inputConsultants = consultants.OfType<int>().ToList();
if (!String.IsNullOrEmpty(firstname)) { results = db.Patients.Where(c => c.FirstName.ToLower().Contains(firstname.ToLower())); }
if (!String.IsNullOrEmpty(surname)) { results = results.Where(c => c.Surname.ToLower().Contains(surname.ToLower())); }
if (consultants.Length > 0) {
results = results.Where(c => c.Referrals.Any(r => inputConsultants.Contains(r.ConsultantID ?? default(int))));
}
results = results.OrderBy(i => i.Surname);
foreach (Patient p in results) {
output.Add(new HelperCode.DTO.SearchResult(p));
}
return output;
}
答案 0 :(得分:0)
开发人员是一个工具,代码工作正常,但输入值不正确。希望能有所帮助。