0

私の前の質問に続いて: linq での単純な内部結合

以下とまったく同じことを行うには、どうすればlinqを書くことができますか..

SELECT A.name, B.name
FROM A
INNER JOIN B ON A.id = B.AID 
INNER JOIN C ON B.id = C.BID
GROUP BY A.Name, B.Name
ORDER BY A.Name

私はこれを試しましたが、ネストされた選択を生成するため、異なる数の行が生成されます。

var r = from a in db.A
join b in db.B on a.Id equals b.AId
join c in db.C on b.Id equals c.BId
group c by c.B into g1
group b by g1.Key.A into g2
select g2.Key;

のリストを含むのAリストを含む のグループが必要ですBC

4

1 に答える 1

0

私のコメントが書式設定を失った

linq ステートメントで let バインディングを使用して値を保持できます。

from a in db.a
let g1 = a.GroupBy(x => x.Id)
from item in g1
let g2 = item.GroupdBy(x => x.Id)
from item2 in g2
select new {A = a, B = item, C = item2}

またはそのようなもの、うまくいけば、それを解決するのに十分です

于 2012-06-12T13:24:06.147 に答える