LINQ选择数组

时间:2016-03-15 08:53:32

标签: c# entity-framework linq navigation-properties

我有一个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;
        }

1 个答案:

答案 0 :(得分:0)

开发人员是一个工具,代码工作正常,但输入值不正确。希望能有所帮助。