Entity framework 为什么查询语法中的“selectmany”不适用于join

Entity framework 为什么查询语法中的“selectmany”不适用于join,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,一张发票有许多产品,而一个产品可以有许多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用于当您有两个单独的集合时,您希望比

一张发票有许多产品,而一个产品可以有许多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只包含匹配的产品。您不需要手动链接发票ID

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