为什么查询语法上的 "select many" 不适用于 join

Why does "select many" on query syntax not work with join

一个Invoice有很多产品,一个产品可以有很多X(这里X应该不重要)

var query = from i in invoices
            join prod in i.products on i.id equals prod.InvoiceId
            select new MyClass{ Id = i.id, more props }

为什么加入不起作用?

我得到的错误是 "i.product" 这里的 "i" 在当前上下文中不存在。

join 用于当您有两个单独的集合时,您想要比较这些集合的各种元素的某些属性。当您有一个单独的未经过滤的产品集合,并且您想要查找与发票 ID 匹配的产品时,您可以使用它。例如,如果您没有定义任何导航属性,您可能会使用它。

这不是你想要的:你有一个导航 属性,通过使用它,Entity Framework 将设置一些东西,这样 i.products 只包含配套产品。您不需要手动 link 发票 ID。

var query = from i in invoices
            from prod in i.products
            select ...;