Linq在内部和左外部连接上有困难
本文关键字:连接 外部 在内部 Linq | 更新日期: 2023-09-27 18:05:08
我不明白为什么会失败。错误是:
失败:标识符'Patient_recid'不是' nova . data . returntoooffice '的参数或变量或字段。如果'Patient_recid'是一个属性,请为其添加FieldAlias或Storage属性,或者将其声明为字段的别名。
是的…这是正确的。表的设置使
-
Returntooffices
引用encountertimes
记录(内连接)。 -
encountertimes
记录引用patient
表记录(内连接) -
Returntoooffice
记录可能有也可能没有appointment
记录——这就是我试图使用左外连接的原因。
returntooffices
记录没有patient_recid
,这就是为什么我试图将它连接到encountertimes
记录。
如何正确地做到这一点?
TIA
var query =
from rto in cxt.Returntooffices
from encounter in cxt.Encountertimes.Where(f => f.Recid == rto.Encounter_recid)
from patient in cxt.Patients.Where(p => p.Recid == encounter.Patient_recid && p.Groupid == groupid)
from appointment in cxt.Appointments.Where(a => a.Recid == rto.Appointment_recid).DefaultIfEmpty()
select new
{
RTO = rto,
APPOINTMENT = appointment
};
var b = query.ToList();
比起更好的想法,这似乎可以编译和工作(耶!)
var q =
from rto in cxt.Returntooffices
join encounter in cxt.Encountertimes on rto.Encounter_recid equals encounter.Recid
join patient in cxt.Patients on encounter.Patient_recid equals patient.Recid
join appointment in cxt.Appointments on rto.Appointment_recid equals appointment.Recid into apt
from a in apt.DefaultIfEmpty()
where patient.Groupid == groupid
select new
{
RTO = rto,
APPOINTMENT = a
}
).ToList();