我已經設置了此編程練習。使用1條LINQ語句從分層數據填充樹
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication2
{
class DataObject {
public int ID { get; set; }
public int ParentID { get; set; }
public string Data { get; set; }
public DataObject(int id, int pid, string data) { this.ID = id; this.ParentID = pid; this.Data = data; }
}
class TreeNode {
public DataObject Data {get;set;}
public List<DataObject> Children { get; set; }
}
class Program
{
static void Main(string[] args)
{
List<DataObject> data = new List<DataObject>();
data.Add(new DataObject(1, 0, "Item 1"));
data.Add(new DataObject(2, 0, "Item 2"));
data.Add(new DataObject(21, 2, "Item 2.1"));
data.Add(new DataObject(22, 2, "Item 2.2"));
data.Add(new DataObject(221, 22, "Item 2.2.1"));
data.Add(new DataObject(3, 0, "Item 3"));
}
}
}
所需的輸出是3個樹節點列表中,具有項目1,2和3。第2項將具有2個數據對象作爲其子部件等的列表。
我一直試圖在LINQ中只使用1條語句來填充這個樹(或者說一個森林)。一個簡單的分組給了我想要的數據,但挑戰在於將它組織在TreeNode對象中。
有人可以給這個暗示或不可能的結果嗎?
你是說你想要一個2級或任意級別的樹的列表?您定義TreeNode類的方式允許只有兩個級別的樹,即根和直接子級。 – 2010-05-03 19:12:30
是的。我需要任意深度。我認爲我在複製代碼示例時錯過了它 – Midhat 2010-05-04 04:46:39