34
私はこのクエリをSQLで実装しましたが、Entity Frameworkを使用してLINQで実装したいのですが、複数のテーブルを外部結合のまま適用するにはどうすればよいですか?LINQ to SQL複数のテーブルを外部に残しました
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
日付の扱い方は? @lazyberezovsky –
@EhsanSajjad welcome :)私はちょうどクエリをテストしていて、問題を見つけました。あなたが外部結合を残したときに、値の一部が 'p、m'になることがあります。単純な選択では問題ありませんが、グループ化しているときに 'nullをInt32に割り当てることはできません。だから回避策があります - 匿名オブジェクトを選択すると 'prno = p == null? 0:p.prno'。それはトリックを行います –
日付のものの使用を処理する@EhsanSajjad [EntityFunctions.TruncateTimeメソッド](http://msdn.microsoft.com/en-us/library/system.data.objects.entityfunctions.truncatetime.aspx) –