Я пытаюсь запустить следующий запрос MS SQL:
select PolicyCode, OccupancyCode, premiumcode, VersionNumber, rate
from COVERAGE_RATES as cov
group by PolicyCode, OccupancyCode, PremiumCode,VersionNumber, rate
having (VersionNumber = 25 or VersionNumber =
(
select MAX(versionnumber) from COVERAGE_RATES where
PolicyCode = 4 and OccupancyCode=2 and PremiumCode = cov.PremiumCode
) ) and PolicyCode = 4
AND OccupancyCode = 2
Идея состоит в том, чтобы взять записи, где VersionNumber равен 25 или, если в группе нет такой версии, взять максимальное число,То есть, если у нас есть таблица:
policyCode Version ...
----------------------
1 2
1 10
2 1
2 25
2 26
У нас должен быть следующий результат:
policyCode Version ...
----------------------
1 10
2 25
Код Linq:
var res = (from c in CoverageRate
group c by c.PolicyCode
into rateGroup
where rateGroup.Any(r => r.VersionNumber == versionNumber ||
r.VersionNumber ==
CoverageRate.Where(c2 => c2.OccupancyCode == occupancyCode && c2.PolicyCode == policyCode)
.Max(c2 => c2.VersionNumber))
select rateGroup);
Но я полагаюЯ делаю что-то не так, потому что когда я пытаюсь взять res.Count () у меня появляется следующая ошибка:
Невозможно создать постоянное значение типа '..CoverageRate'.В этом контексте поддерживаются только примитивные типы (такие как Int32, String и Guid).
Может ли кто-нибудь помочь мне с этим запросом?