2012-03-19 13 views
4

LINQ内で次のクエリを記述する際に支援が必要です。理想的には、(パラメータとして渡された)変数をTop X値として使用したいと思います。提案は高く評価されました。LINQで上位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ごとに上位3行を取得しようとしているので、SiteIDを使用して結合します。

+0

現在の内容を表示してください。 –

答えて

5

にそのことについて何を:あなたは明確にLINQクエリに変換されたSQLだと

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 

3

LinqクエリでTake()メソッドを使用する必要があります。あなたのSQLを簡素化することができたように私はそれがクエリ構文を使用して可能だとは思わないが、あなたはところで

links.OrderBy(l => l.ID).Take(3);

ような何かを行うことができ、それは(私が正しくあなたのモデルを理解していないよいない限り)と思われます

SELECT TOP 3 * 
FROM [Link] a 
ORDER BY a.ID 
+0

私はあなたの質問を読んだ後、私の答えを提出し、エリックを見て、これはあなたが欲しいものです。 – scottheckel

+0

私は各idの各idの上位3つを選択する必要があります。したがって、外側のクエリと結合してください。 – stats101

+0

ああ....使@ Marcinの答え – scottheckel

関連する問題