SELECT *
FROM A
LEFT JOIN B ON A.HelloID = B.HelloID
LEFT JOIN C ON A.BusyID = C.BusyID AND B.MemID = C.MemID
我试过以下方法:
var list = from A in this.A
join B in this.B
on A.HelloID equals B.HelloID into bgj
from subb in bgj.DefaultIfEmpty()
join C in this.C
on B.MemID equals C.MemID into cgj
from subc in cgj.DefaultIfEmpty()
on A.BusyID equals C.BusyID into cgj2
from subc2 in cgj2.DefaultIfEmpty()
但这不起作用,有什么想法吗?
试试这个:
var list = from A in this.A
join B in this.B
on A.HelloID equals B.HelloID into bgj
from B in bgj.DefaultIfEmpty()
join C in this.C
on A.BusyId equals C.BusyId into cgj
from C in cgj.DefaultIfEmpty()
where B.MemID == C.MemID
你应该澄清关于MemID和BusyId的问题。如果它们可以为空。在本例中,最后一行可以像这样:
where (B.MemID==null || B.MemID == C.MemID )
//Or
where ((B.MemID==null && C.MemID==null) || (B.MemID == C.MemID ))
var list = from A in this.A
join B in this.B
on A.HelloID equals B.HelloID into bgj
from subb in bgj.DefaultIfEmpty()
join C in this.C
on new { colA = A.BusyID, colB = B.MemID } equals new { colA = C.BusyID, colB = C.MemID } into cgj
from subc in cgj.DefaultIfEmpty()