我有3个表:表A,B和C.表A有主键“Id”,表B和C都通过将id存储在FK成员中来链接到该表。
我想要以下内容:
对于表A中的每一行,获取表B中的匹配行(A的Id等于表B的FK),并获得表C中具有FK = Id的每一行。
所以我的结果应该是一个列表:
{
TableARow,
TableBRow,
List<TableCRow>
}
var query = from r in context.TableA
join c in context.TableB
on r.Id equals c.FK
join m in context.TableC
on r.Id equals m.FK
into mappings
select new MyViewModel
{
A = r,
B = c,
C = mappings.ToList()
};
var result = query.ToList();
上面的查询是我所拥有的,但它每次只返回一个项目为mappings.ToList()。
非常感谢
答案 0 :(得分:0)
当您join
使用不同的表时,您的模型看起来就像{ TableARow, TableBRow, TableCRow }
。
如果您想让TableCRow
在List
范围内GroupBy
,A
和B
行:
var query = (from r in context.TableA
join c in context.TableB
on r.Id equals c.FK
join m in context.TableC
on r.Id equals m.FK
group m by new { r, c } into grouping
select new MyViewModel
{
A = grouping.Key.r,
B = grouping.Key.c,
C = grouping.ToList()
}).ToList();