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

Outer join in Linq - type interface failed in the call to 'SelectMany'

我正在尝试在 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)

我需要编写一个查询,其中 returns 所有合同,即使这些外键中的任何一个为空。

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

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' 也能正常工作。

非常感谢您的帮助。

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