Я пытаюсь преобразовать SQL-запрос в c # эквивалент LINQ / Lambda, как показано ниже
SELECT mv.MeasureID, mv.ProviderID, MAX(mv.ReportingDate) AS mostRecentReportingDate
FROM (((TransactionDetail AS td
INNER JOIN #provider AS p ON td.TrustCode = p.Code)
INNER JOIN #measure AS m ON td.MetricCode = m.InternalID)
INNER JOIN #measureValue AS mv ON m.ID = mv.MeasureID AND p.ID = mv.ProviderID)
WHERE td.BatchID = @batchID AND
td.RowAction = 'A' AND
(m.Type = 7 OR m.Type = 8) AND
td.Value <> mv.Value
GROUP BY mv.MeasureID, mv.ProviderID
Я застрял в этой строке
INNER JOIN #measureValue AS mv ON m.ID = mv.MeasureID AND p.ID = mv.ProviderID)
Ниже я попробовал такдалеко
var total = (from TD in ingestionHubContext.TransactionDetail
join P in provider on TD.TrustCode equals P.Code
join M in measure on TD.MetricCode equals M.InternalId
join MV in measureValue on M.Id equals MV.MeasureId //and logic to be fixed
where TD.BatchId == batchId && TD.RowAction == "A"
&& (M.Type == 7 || M.Type == 8) && TD.Value != MV.Value
group TD by new { MV.MeasureId, MV.ProviderId } into Total
select Total);
Не могли бы вы предложить, как я могу написать это лучше?и обработайте СОЕДИНЕНИЕ с условием И в 4-й строке моего кода.
Я попробовал ниже, что не работает, так как они должны соответствовать (ошибки в P.Id)
join MV in measureValue
on new { M.id, P.Id } equals new { MV.MeasureId, MV.ProviderId }
Мне также нужна помощь в выполнении MAX(mv.ReportingDate)
. Любая помощь очень ценится.Заранее спасибо.