34
Bu sorguyu SQL'de alıyorum ve bunu Entity Framework kullanarak LINQ uygulamasında uygulamak istiyorum, ancak sol dış birleştirmelerde birden çok tablo nasıl uygulayabilirim?LINQ to SQL çoklu tablolar sol dış birleştirme
SELECT d.bookingid,
d.labid,
d.processid,
p.prid,
p.prno,
d.DestinationBranchID,
d.SendStatus
FROM dc_tpatient_bookingd d
LEFT OUTER JOIN dc_tpatient_bookingm m ON d.bookingid = m.bookingid
LEFT OUTER JOIN dc_tpatient p ON p.prid = m.prid
LEFT OUTER JOIN dc_tp_test t ON d.testid = t.testid
LEFT OUTER JOIN dc_tp_groupm gm ON t.groupid = gm.groupid
LEFT OUTER JOIN dc_tpanel pn ON m.panelid = pn.panelid
LEFT OUTER JOIN dc_tp_organization og ON og.orgid = m.clientid
LEFT OUTER JOIN dc_tp_ward w ON w.wardid = m.wardid
LEFT OUTER JOIN dc_tp_branch tb ON tb.BranchID = m.BranchID
WHERE d.processid = 6
AND ((m.branchId = 1
AND d.DestinationBranchID = 0)
OR (d.DestinationBranchID = 1
AND d.sendstatus = 'R'))
AND d.testid IN (SELECT testid
FROM dc_tp_test
WHERE subdepartmentid = 13)
AND date_format(m.enteredon, '%Y/%m/%d') BETWEEN '2013/06/15' AND '2013/06/15'
GROUP BY m.bookingid
ORDER BY d.priority DESC,
m.bookingid ASC
Tarihle nasıl baş edilir? @lazyberezovsky –
@EhsanSajjad welcome :) Sorguyu test ediyordum ve bir sorun buldum - sol dış birleşim yaptığınızda, o zaman bazı değerler p, m' boş olabilir. Basit seçim için sorun değil, ancak gruplandırma yaparken, null'ın Int32'ye atanması gibi bir şey görebilirsiniz. Yani burada bir geçici çözüm - anonim nesneyi seçerken 'prno = p == null? 0: p.prno'. Bu tarih kullanımı [HandityFunctions.TruncateTime yöntemi] (http://msdn.microsoft.com/en-us/library/system.data.objects.entityfunctions.truncatetime.aspx) –
@EhsanSajjad hile yapacaktır gruplama noktanız yoktu, neden seçimden sonra x'e gidiyorsunuz, gerekli mi? @lazyberezovsky –