2012-06-12 44 views
0

從我剛纔的問題繼:Simple inner join in linqLINQ的加入和組

我怎麼會寫一些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的包含的B名單「包含C的列表

+0

你可以使用let在LINQ語句來保持一個值綁定。 從在db.a 設G1 = a.GroupBy(X => x.Id) 從G1項 讓G2 = item.GroupdBy(X => x.Id) 從ITEM2在G2 選擇新{A = a,B = item,C = item2} 或類似的東西,希望它給你足夠的工作了 – Dylan

回答

0

呸我的評論失去了它的格式

你可以使用一個令S綁定在linq語句中以保存一個值。

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} 

或類似的東西,希望它給你足夠的去解決它

+0

謝謝,我想出了一個解決方案。 – Jon