2011-07-22 55 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 

如果我決定移動ID 3有2作爲父母,而不是1,我需要改變所有的網址爲子頁面。

是否有一個簡單的(ish)遞歸技術,我可以使用它?

謝謝

+0

您是否在尋找SQL解決方案或C#? – sll

+0

爲什麼要保存頁面的級別?這取決於其他數據。順便說一句,你在談論一棵樹,而不是遞歸。 – Peter

+1

爲什麼你需要改變所有的網址?解決方案取決於情況。您需要提供更多信息,以何種方式使用這些網址。 –

回答

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