以下のようなツリーで、各項目がその親 ID と順序番号だけを知っている場合、Foo のすべての子孫を照会するにはどうすればよいでしょうか?
- 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
時点で認識されます。
編集:子供と孫だけでなく、すべての子孫を選択するようにしたいという忘れられた詳細を追加しました。