Entity framework 连接三角形关系

Entity framework 连接三角形关系,entity-framework,ienumerable,Entity Framework,Ienumerable,关系: Profil>Branch>City Profil>Hotel>City 命令: from p in Profil.getData() join b in Branch.getData() on p equals b join h in Hotel.getData() on p equals h join c in City.getData() ^how to reuse the equals join 我可以加

关系:

Profil>Branch>City
Profil>Hotel>City
命令:

from p in Profil.getData()
join b in Branch.getData() on p equals b
join h in Hotel.getData() on p equals h
join c in City.getData()
                        ^how to reuse the equals join
我可以加入城市分店和酒店吗?
我可以在没有City.getData的情况下克隆c吗?

当然可以,只需执行以下伪代码:

from p in Profil.getData()
join b in Branch.getData() on p equals b
join h in Hotel.getData() on p equals h
join c1 in City.getData() on b equals c1
join c2 in City.getData() on h equals c2
EF将把它转换为城市表的两个别名。因此,您不会重用或克隆城市,但在SQL中,这也是不可能的。SQL server将能够在查询的执行计划中对其进行优化。

into基本上是将联接转换为,这将创建一个不同于联接的分组对象,但在您的情况下仍然必须使用两个联接。