我正在尝试将以下 SQL 转换为 c# 中的 Linq 查询(.net core 2.1 和 EF core 2.2)
SELECT TD.*, RD.Match
FROM TransactionDetail TD
INNER JOIN dbo.Measure M ON M.InternalID = TD.MetricCode
LEFT OUTER JOIN (
SELECT tmp.ID, tmp.ReportingDate, 1 AS Match
FROM tmp
) AS RD ON RD.ID = M.Frequency AND RD.ReportingDate = TD.ReportingDate
WHERE RD.Match IS NULL AND
TD.BatchID = @batchID AND
NOT EXISTS (SELECT TransactionFailureReasonID FROM TransactionDetailFailureReasons R WHERE R.TransactionDetailID = TD.ID and R.TransactionFailureReasonID = 'NRD') AND
NOT EXISTS (SELECT TransactionFailureReasonID FROM TransactionDetailFailureReasons R WHERE R.TransactionDetailID = TD.ID and R.TransactionFailureReasonID = 'RDP') AND
NOT EXISTS (SELECT TransactionFailureReasonID FROM TransactionDetailFailureReasons R WHERE R.TransactionDetailID = TD.ID and R.TransactionFailureReasonID = 'RDF')
有人可以帮助我如何先进行内部连接,然后再进行左外连接吗?
我已经来了这么远,
var IQ1 = (from TD in IngestionHubContext.TransactionDetail
join M in ModelHospitalPreviewContext.Measure on TD.MetricCode equals M.InternalId
join R in RD.DefaultIfEmpty on new {ID = M.Frequency, TD.ReportingDate} equals new { R.ID, R.ReportingDate} into J
//?????
任何帮助或建议表示赞赏。
提前致谢。