我試圖運行下面的MS SQL查詢:的Linq:與分組查詢,有和最大
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()我有以下錯誤:
無法創建一個常量值爲typ e'..CoverageRate'。在此上下文中僅支持基本類型(如Int32,String和Guid)。
有人可以幫我看看這個查詢嗎?
讓我看看這一個。謝謝! – mimic 2011-12-14 18:43:58
不幸的是我有同樣的錯誤。 :(我知道問題是最大的一部分,只要我將它改爲某個數字,它就起作用了。出於某種原因,linq不喜歡使用max。 – mimic 2011-12-14 18:48:52