Я работаю с LINQ \ EF и пытаюсь заменить SQL Stored Pro c, используя Dapper с Entity Framework.
Я на 99% согласен с определенным аспектом вызова, однако я получаю 2 слишком много результатов, потому что выбор не получает только максимальное значение.
SQL
SELECT
MAX(QS.QSVersion) AS LatestVersion,
QS.QSNo AS VerQSno
FROM
[forms].QS
INNER JOIN
[forms].QSCollectionMappings qsc
ON qsc.QSNo = QS.QSNo
WHERE
qsc.QSCollectionTypeId = @QSCollectionTypeId
AND QS.StatusId = 2
GROUP BY
QS.QSNo;
LINQ
ar join = (from qs in QS
join qscm in QSCollectionMappings on
new { QuestionNumber = qs.QSNo, Version = qs.QSVersion } equals
new {QuestionNumber = qscm.QSNo, Version = qscm.QS.QSVersion}
where qscm.QSCollectionTypeId == collectionId && qs.StatusId == 2
group qs by new
{
QuestionNumber = qs.QSNo,
QuestionVersion = qs.QSVersion,
} into grp
select new {
QuestionNumber = grp.Key.QuestionNumber,
QuestionVersion = grp.Max(x => x.QSVersion)
});
Результаты
The results
QSNo |Version
|34 |-| 1.0 |
|38 |-| 1.0 | // Should not show
|276|-| 1.0 | // Should not show
|38 |-| 2.0 |
|276|-| 2.0 |
Я был бы признателен, если бы меня посоветовали о том, что я сделал здесь не так, чтобы я мог исправить проблему.
Спасибо
Саймон