2012-06-12 34 views
0

的關係: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嗎?

回答

0

當然,只是做(以下你的僞代碼):

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服務器將能夠在查詢的執行計劃中優化它。

+0

那麼如何將命令轉換爲..是不是創造了一些東西? – user308551

+0

'into'基本上是將一個連接變成一個[組連接](http://msdn.microsoft.com/en-us/library/bb311040.aspx),它創建了一個不同於「連接」的分組對象,但你仍然需要在你的情況下使用兩個連接。 –