Я настроил это упражнение по программированию.Заполнение дерева из Иерархических данных с использованием инструкции 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 treenodes, имеющих пункты 1, 2 и 3. Пункт 2 будет иметь список 2 DataObjects как его член детей и так далее.
Я пытаюсь заполнить это дерево (или, скорее, лес), используя только 1 инструкцию в LINQ. Простая группа дает мне нужные данные, но задача состоит в том, чтобы организовать ее в объектах TreeNode.
Может кто-нибудь дать подсказку или результат невозможности для этого?
Вы хотите, чтобы список деревьев с 2 уровнями или произвольным количеством уровней? Способ, которым вы определили свой класс TreeNode, позволяет деревьям с двумя уровнями, корневыми и непосредственными детьми. –
Да. Мне нужна произвольная глубина. Думаю, я пропустил это, когда воспроизвел образец кода – Midhat