如何在加入第三个表时将外连接添加到列表中

时间:2016-08-02 12:13:49

标签: c# mysql sql linq

我有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()。

非常感谢

1 个答案:

答案 0 :(得分:0)

当您join使用不同的表时,您的模型看起来就像{ TableARow, TableBRow, TableCRow }

如果您想让TableCRowList范围内GroupByAB行:

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();