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's,B其中包含 's 列表,其中包含C's列表

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 回答