【发布时间】:2018-06-30 19:02:54
【问题描述】:
我在 ASP.NET MVC 中工作,我有一个场景,用户可以选择多个选项来获取医生列表,这就是我的操作的样子。
public JsonResult DoctorsList(int? specialization , int? city, int? area, int? insurance_company, string doctor_name )
这些参数中的任何一个都可以有一些值,并且它们中的任意数量都可以为空,也可以全部为空,因为我将返回所有记录。 现在我知道了一种漫长而复杂的方法,我可以对这些参数进行不同的组合,并检查哪个为空,哪个不是,然后根据它编写我的查询。 但是还有其他更短更有效的方法吗? 现在我正在使用 OR 条件来获取这样的记录
var doctors = db.Doctors.Where(e =>
e.specialization == specialization ||
e.Clinics.FirstOrDefault(cs => cs.doctor_id == e.doctor_id).Area.city_id == city ||
e.Clinics.FirstOrDefault(cs => cs.doctor_id == e.doctor_id).area_id == area ||
e.Clinics.FirstOrDefault(cs => cs.doctor_id == e.doctor_id).ClinicInsuranceCompanies
.Select(sin=>sin.company_id).ToList().Contains(insurance_company) ||
e.first_name == doctor_name ||
e.last_name == doctor_name
)
.Select(s => new
{
doctor_name = s.first_name + " " + s.last_name
}).ToList();
但我希望它可以组合使用,例如选择具有 specialization_id = 1 和 city_id=2 的医生,以及其他类似的组合。但如果只有一个条件匹配,OR 条件将为真
【问题讨论】:
-
您可以发布您从中选择所有记录的查询吗?
-
更新了我的问题
-
我添加了一个答案检查是否适合你
标签: c# asp.net-mvc entity-framework search