我有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()。
非常感谢
最佳答案
当您按照您的方式连接
不同的表时,您的模型将类似于{ 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();
关于c# - 如何在连接第三个表时对列表进行外连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720132/