Linq类型接口的外部连接在调用'SelectMany'时失败

本文关键字:SelectMany 失败 调用 接口 类型 外部 连接 Linq | 更新日期: 2023-09-27 18:11:49

我正试图在Linq中编写一个复杂的查询。我有6张桌子。

Contract (Zero/One to Many) Agent (PK AgentID)
Contract (Zero/One to Many) Customer (PK CustomerID)
Contract (Zero/One to Many) Site (PK SiteID)
Contract (Zero/One to Many) Supplier (PK SupplierID)
Contract (Zero/One to Many) Employee (PK EmployeeID)

我需要写一个查询,返回所有合同,即使这些外键是空的。

我不确定是否使用左外连接或右外连接。我知道使用左外连接我们可以检索所有主行,即使没有子记录。我正在尝试相反的方法。我写了下面的查询

var contracts1 = (from c in ctx.Contracts
join a in ctx.Agents on c.AgentID equals a.AgentID into ca
from a in ca.DefaultIfEmpty
join cu in ctx.Customers on c.CustomerID equals cu.CustomerID into ccu
from cu in ccu.DefaultIfEmpty
join su in ctx.Suppliers on c.SupplierID equals su.SupplierID into csu
from su in csu.DefaultIfEmpty
join s in ctx.Sites on c.SiteID equals s.SiteID into cs
from s in cs.DefaultIfEmpty
join e1 in ctx.employees on c.EmployeeID equals e1.EmployeeID into ce1
from e1 in ce1.DefaultIfEmpty
select new { c, a, cu, su, s, e1 });

不编译。错误消息是'调用'SelectMany'时类型接口失败。

我在尝试一些非常简单的东西

from a in ctx.Agents
from c in a.Contracts.DefaultIfEmpty
select new { c, a }

没有'DefaultIfEmpty'也可以正常工作。

我非常感谢你的帮助。

Linq类型接口的外部连接在调用'SelectMany'时失败

在查询中尝试DefaultIfEmpty(),而不仅仅是DefaultIfEmtpy