Return IEnumerable<Object> 而不是 IEnumerable<IEnumerable><Object>

Return IEnumerable<Object> rather IEnumerable<IEnumerable><Object>

我需要连接两个 table 并使用 linq 从其中一个 table 获取数据。

连接工作正常,但它 returns IEnumerable <$IEnumerable><$Ojbect> 我需要 IEnumerable<$Object>

代码如下:

(
    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