我需要在LINQ中編寫以下查詢方面的幫助。理想情況下,我想使用一個變量(作爲參數傳入)作爲Top X值。建議感激。在LINQ中使用Top X編寫子查詢
SELECT *
FROM [Link] a
WHERE ID IN (SELECT TOP 3 ID
FROM [Link] b
WHERE b.SiteID = a.SiteID
ORDER BY a.ID)
內部查詢使用SiteID加入,因爲我試圖檢索每個SiteID的前3行。
我需要在LINQ中編寫以下查詢方面的幫助。理想情況下,我想使用一個變量(作爲參數傳入)作爲Top X值。建議感激。在LINQ中使用Top X編寫子查詢
SELECT *
FROM [Link] a
WHERE ID IN (SELECT TOP 3 ID
FROM [Link] b
WHERE b.SiteID = a.SiteID
ORDER BY a.ID)
內部查詢使用SiteID加入,因爲我試圖檢索每個SiteID的前3行。
什麼有關:
from l in links
where
(from l2 in links
where l2.SiteID == l.SiteID
orderby l2.ID
select l2.ID).Take(3).Contains(l.ID)
select l
這就是你的SQL清楚地翻譯成LINQ查詢。
您需要在Linq查詢中使用Take()方法。我不認爲這是可能使用的查詢語法,但你可以做這樣的事情
links.OrderBy(l => l.ID).Take(3);
順便說一句,好像你的SQL可以簡化(除非我沒有正確理解你的模型)到
SELECT TOP 3 *
FROM [Link] a
ORDER BY a.ID
提交我的答案並看到Eric的後,我重新閱讀你的問題,這是你想要的。 – scottheckel 2012-03-19 17:22:35
我需要從每個siteid中選擇每個id的前3,因此請使用外部查詢進行連接。 – stats101 2012-03-19 17:38:14
哦....使用@ Marcin的答案 – scottheckel 2012-03-19 19:23:00
請告訴我們你目前有什麼。 – 2012-03-19 17:13:24