2010-09-06 73 views
1

首先,如果您覺得此問題之前已經提出,我感到抱歉,但我似乎無法將自己的想法包括在這一個中,儘管它並不是最難的事情做..將平面數據從sql轉換爲列表<Item>

基本上我有從SQL查詢結果,其保持多個行,現有出:

id, parentid, name, description, level 

水平視爲表示爲正整數樹結構的項目的深度。

現在我很想來解析/這款平板數據轉換爲「List<Item> mySqlData」,其中項目包括像下面的類定義

public class Item 
    { 
     public string Id { get; set; } 
     public string ParentId { get; set; } 
     public string Name { get; set; } 
     public string Description { get; set; } 
     public string List<Item> { get; set; } 
    } 

有誰能夠給我一些示例代碼,它可能會是東西遞歸迭代的線條槽名單,同時增加在他們的地方項目..

在此先感謝

回答

3

假設你想建立的樹,沒有得到數據失靈,你應該一個可以隨時進行查找,即

var idLookup = new Dictionary<int, Item>(); 
var roots = new List<Item>(); 
foreach([row]) { 
    Item newRow = [read basic row]; 
    int? parentId = [read parentid] 
    Item parent; 
    if(parentId != null && idLookup.TryGetValue(parentId.Value, out parent)) { 
     parent.Items.Add(newRow); 
    } else { 
     roots.Add(newRow); 
    } 
    idLookup.Add(newRow.Id, newRow); 
} 
+0

你釘了它,不會想到用字典更容易找到一個現有的父母,謝謝! – Sam 2010-09-06 11:08:21

+0

優秀的東西!當然幫助了我。 – dotmartin 2011-04-08 11:28:43