我在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行。
答案 0 :(得分:5)
那是怎么回事:
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查询。
答案 1 :(得分:3)
您需要在Linq查询中使用Take()方法。我不认为使用查询语法是可能的,但您可以执行类似
的操作 links.OrderBy(l => l.ID).Take(3);
顺便说一下,似乎你的SQL可以简化(除非我不能正确理解你的模型)
SELECT TOP 3 *
FROM [Link] a
ORDER BY a.ID