2011-07-22 19 views
1

私のCMSシステムで問題の洗練された解決策を見つけようとしています。誰かがページを動かすと、すべての子ページも変更する必要があります。簡体データベースは、このようなものです:ASP.Net C# - 再帰、親子関係の助けが必要

id  url    parent  level 
1  page.aspx   0    0 
2  page2.aspx  0    0 
3  page.aspx   1    1 
4  page.aspx   1    1 
5  page.aspx   3    2 
6  page.aspx   3    2 

私が代わりに1の親として2を持つようにID 3を移動することを決定した場合は、私は子ページのURLのすべてを変更する必要があります。

これには単純な(ish)再帰的テクニックがありますか?

ありがとうございました

+0

SQLソリューションまたはC#をお探しですか? – sll

+0

ページのレベルを保存するのはなぜですか?それは他のデータに依存します。ところで、あなたは再帰ではなく木について話しています。 – Peter

+1

なぜあなたはすべてのURLを変更する必要がありますか?解決策は状況によって異なります。あなたはどのような方法でURLを使用するかについてより多くの情報を提供する必要があります。 appareantlyレベルのプロパティ(私は気にしてそれを使用するでしょうが、それは、パフォーマンス上の理由から、データベースに格納することができます) –

答えて

0

これはなんですか?

void IncrementUrlLevel(UrlCollection collection, UrlEntry entry){ 
    if (entry == null) 
     return; 

    foreach (UrlEntry childEntry in collection){ 
     if (childEntry.Parent == entry.Id){ 
      IncrementUrlLeven(collection, childEntry); 
     } 
    } 

    entry.Level++; 
} 
+0

それは私が働くことができる何かのように見えます。ありがとう。 – Dave