在像下面這樣的樹中,每個項只知道其父ID和訂單號,那麼查詢Foo所有後代的好方法是什麼?如何在linq-to-entities中有效地構建「獲取後代」算法?
- 1:富
- 2:子
- 3:孫1
- 4:孫2
- 2:子
- 5:酒吧
- 6:巴茲
我可以讓孩子們喜歡這個
var q = from item in foos
where item.parentid == "Foo"
select item;
但我怎麼能得到所有的後代任何深度在單個查詢?如果可能,我想避免使用多個查詢進行遞歸。具體而言,我希望得到所有可能的後代,不僅僅是兒童和孫子,而且還包括第n級兒童。我想我可以用訂單號這樣的情況下與查詢像
var q = from item in foos
where item.ordernumber > 1 && item.ordernumber < 5
select item;
但在這種情況下,我無法弄清楚如何獲得5
,這意味着下一非子代的訂單號。在這一點上,1
總是已知的。
編輯:新增遺忘的細節,我希望它選擇所有後代,不只是孩子和孫子。
即時通訊不知道我明白你的問題。你想要所有'foo'的孩子嗎? – 2013-05-07 13:26:39
我想要所有foo的後代,意思是「小孩,孫子1和孫子2」,共3個項目。希望清理一些東西。各位用戶,如果不清楚,請將@JensKloster的評論投給我,我將編輯該問題。 – Nenotlep 2013-05-07 13:50:22
好的。你能展示你的課程嗎? 'Foo'有'Child'的集合還是隻有一個。 「Foo」,「Child」,「GrandChild1」和「Grandchild2」是同一類型嗎? – 2013-05-07 13:54:54