2014-09-23 66 views
0

什麼是實體中獲取父項的父項的正確(且重要最有效)的LINQ查詢。實體LINQ查詢獲取父項的父項

例如:

一個人有許多足的,其中有許多腳趾全部由鍵關係連接。

鑑於腳趾,我可以很容易地找到足部,因爲腳趾會有footID字段,腳會有personID字段。我如何將這兩個查詢合併爲一個?

(我喜歡的LINQ爲lambda功能,但查詢語言也沒關係)

+0

你有任何代碼這麼遠? – DavidG 2014-09-23 10:02:15

+0

如果你使用EF,那麼每個'Toe'都有一個'Foot'屬性,而每個'Foot'都有一個'Person'屬性。您只需查詢「Toes」集合並「包含」「Foot.Person」。 – jmcilhinney 2014-09-23 10:02:32

+0

大衛,我目前的方法是簡單地查詢父母,然後查詢父母的父母。兩個簡單的Where querys。 – Steve 2014-09-23 10:06:19

回答

0
var person = people.Single(x => x.PersonId == feet.Single(y => y.FootId == toe.FootId).PersonId); 
+0

我認爲這樣做,但嵌套查詢聽起來像一個壞主意給我。這實際上不會映射到兩個SQL查詢嗎? – Steve 2014-09-23 12:27:55

+0

我似乎產生了一個單一的查詢,儘管一個使用子查詢而不是連接,但我相信數據庫將會有效地利用這個查詢。無論如何這只是一次往返。 – stovroz 2014-09-23 12:47:00