返回 IEnumerable<Object> 而不是 IEnumerable<IEnumerable><Object>



我需要连接两个表,并使用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

最新更新