如何通过实体框架查询接收完整数据

编程


我在数据库中有两个表,我想要组合并使用这些数据。

所以我使用了代码片段:

C#
var listOfFoundRespIds = (from a in context.Adresses
						  join e in context.ExtraData
							  on a.LFD equals e.lfd
						  where a.PROJID == 2048
						  select new
						  {
							  RESPID = e.str03,
							  LFD = e.lfd,
							  PROJID = a.PROJID
						  })
						  .ToList();

数据库表本身有 31.966.037 个条目。
在调试时(代码执行后立即),我启动了 iEnumeration Viewer 并查看 context.Adresses 并完成了 csv 导出。 该列表中有 995.101 条条目。 因此,在执行时,我没有主表中的所有条目可以使用它。

也许有人有任何想法,如何解决?

我尝试过的:

检查了 IEnumeration Viewer 和 csv checkout
仔细检查数据库表
阅读有关实体框架和其他 SQL 内容的文档。

解决方案1

你正在执行一个 INNER JOIN – 你只会得到结果 Addresses 表中有对应的记录 ExtraData 桌子。

如果您想要来自 Addresses 表中,即使它们在表中没有对应的记录 ExtraTable,那么你需要执行 LEFT JOIN

执行左外连接(C# 中的 LINQ)- C# | 微软学习[^]

C#
from a in context.Adresses
join ed in context.ExtraData on a.LFD equals e.lfd into edg
from e in ed.DefaultIfEmpty()
where a.PROJID == 2048
select new
{
    RESPID = e.str03,
    LFD = e.lfd,
    PROJID = a.PROJID
}

コメント

タイトルとURLをコピーしました