У меня есть WebGet, которому передается один или несколько кодов провайдера. Для каждого кода поставщика мне нужно вернуть список пациентов для всех стационарных пациентов, где их код существует в качестве принимающего, обслуживающего или консультирующего поставщика.
Должно быть:
WHERE (inpatient = 1)
AND (dischargeddate IS NULL)
AND ((attending = 'SMITH') OR (admitting = 'SMITH') OR (consulting = 'SMITH'))
Цикл for не добавляет критерии к предложению where. Что я делаю неправильно??
Спасибо
[WebGet]
public IQueryable<vw_patient> GetInpatients(string providercode, string searchtext)
{
string[] providers = providercode.Split(new char[] { '|' });
if (string.IsNullOrEmpty(searchtext))
{
var results = (from p in this.CurrentDataSource.vw_patient
where p.inpatient.Equals(true)
&& p.dischargedate.Equals(null)
select p);
foreach (string provider in providers)
{
results = results.Where<vw_patient>(e => e.attending.Equals(provider) || e.admitting.Equals(provider) || e.consulting.Contains(provider));
}
results.OrderBy(p => p.roomloc).ThenByDescending(p => p.patientname);
return results;
}
else
{
var results = (from p in this.CurrentDataSource.vw_patient
where p.patientname.StartsWith(searchtext)
&& p.inpatient.Equals(true)
&& p.dischargedate.Equals(null)
select p);
foreach (string provider in providers)
{
results = results.Where<vw_patient>(e => e.attending.Equals(provider) || e.admitting.Equals(provider) || e.consulting.Contains(provider));
}
results.OrderBy(p => p.roomloc).ThenByDescending(p => p.patientname);
return results;
}
}