c# - 如何在连接第三个表时对列表进行外连接

标签 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()。

非常感谢

最佳答案

当您按照您的方式连接不同的表时,您的模型将类似于{ TableARow, TableBRow, TableCRow }

如果您想让 TableCRow 位于 List 中,您应该 GroupBy AB 行:

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/

相关文章:

c# - 从另一个线程更新控件的属性 (label.Text)

mysql - 如何使用 sql 查询加入我的发票和发票产品表..?

sql - 是否可以回滚主要 SQL 数据库中的 CREATE TABLE 和 ALTER TABLE 语句?

sql - 如何跨多个数据库向sql server中的列添加外键约束?

c# - MongoDB - 无法在元素 {ParentProperty : is null} 中创建字段 'ChildProperty'

c# - FileSystemWatcher 更改事件未针对最近打开的文件触发

java - 选择时出现 JDBC 5 + MYSQL 4 错误

mysql - 每个用户保存相似记录的单个表还是单独的表? (表现??)

mysql - 为什么在我的查询中使用 LIMIT 时 MySQL 很慢?

c# - 在 C# 中以编程方式加载 SSIS 包