Linq在内部和左外部连接上有困难

本文关键字:连接 外部 在内部 Linq | 更新日期: 2023-09-27 18:05:08

我不明白为什么会失败。错误是:

失败:标识符'Patient_recid'不是' nova . data . returntoooffice '的参数或变量或字段。如果'Patient_recid'是一个属性,请为其添加FieldAlias或Storage属性,或者将其声明为字段的别名。

是的…这是正确的。表的设置使

  1. Returntooffices引用encountertimes记录(内连接)。
  2. encountertimes记录引用patient表记录(内连接)
  3. 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();

Linq在内部和左外部连接上有困难

比起更好的想法,这似乎可以编译和工作(耶!)

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();