我需要连接两个表,并使用linq从其中一个表中获取数据。
联接工作正常,但它返回IEnumerable<IEnumerable>lt$Ojbect>并且我需要IEnumerable<对象>
这是代码:
(
from med in meds
join pres in prescriptions
on med.Code equals pres.Code into latstPrescrptions
let allPrescriptions = latstPrescrptions.Where(
pres => pres.PatientId == patientId
&& (pres.PrescriptionEndDate > DateTime.Now)
|| pres.PrescriptionEndDate == null
)
select allPrescriptions
);
感谢
通常,当您想要"压平";集合,SelectMany
就是您要查找的构造。
在LINQ查询语法中,这是通过多个from
子句实现的:
from med in meds
join pres in prescriptions
on med.Code equals pres.Code into latstPrescrptions
let allPrescriptions = latstPrescrptions.Where(
pres => pres.PatientId == patientId
&& (pres.PrescriptionEndDate > DateTime.Now)
|| pres.PrescriptionEndDate == null
)
from prescription in allPrescriptions
select prescription
或者,更简单地说:
from med in meds
join pres in prescriptions
on med.Code equals pres.Code into latstPrescrptions
from prescription in latstPrescrptions.Where(
pres => pres.PatientId == patientId
&& (pres.PrescriptionEndDate > DateTime.Now)
|| pres.PrescriptionEndDate == null
)
仔细观察一下您的查询,您可能只需要避开into
子句,并依靠join
输出来提供您想要的内容。
from med in meds
join pres in prescriptions
on med.Code equals pres.Code
where pres.PatientId == patientId
&& (pres.PrescriptionEndDate > DateTime.Now)
|| pres.PrescriptionEndDate == null
select pres