Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Разобрать список на C#

#c_sharp


В бд имеется таблица, которая хранит дерево данных, и имеет примерно следующий вид:
id, tree, name

Т.е. id записи, tree указывает на принадлежность к тому или иному узлу, и собственно
name - т.е. имя узла

Так вот, tree имеет записи вида:

 1. 
  1.1.
  1.1.1
  1.1.2
1.2.
  1.2
  1.2.1


Хотелось бы все это распарсить и отобразить в TreeView, но пока не знаю каким образом
даже подойти к этой задаче( Подозреваю что есть какое-то простое решение, и нет необходимости
изобретать велосипед
    


Ответы

Ответ 1



using System; using System.Collections.Generic; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { List
list = new List
() { new Header() { Name = "1", List = new List
() { new Header() { Name = "1.1", List = new List
() { new Header() { Name = "1.1.1"}, new Header() { Name = "1.1.2"}, new Header() { Name = "1.1.3"}, } }, new Header() { Name = "1.2"}, new Header() { Name = "1.3"}, } }, new Header() { Name = "2", List = new List
() { new Header() { Name = "2.1", List = new List
() { new Header() { Name = "2.1.1"}, new Header() { Name = "2.1.2"}, new Header() { Name = "2.1.3"}, } }, new Header() { Name = "2.2"}, new Header() { Name = "2.3"}, }} }; treeView1.Nodes.Add("Headers"); BuildTreeView(list, treeView1.Nodes[0]); } private void BuildTreeView(List
list, TreeNode parentNode) { if (list.Count != 0) { foreach (var item in list) { TreeNode tn = new TreeNode(item.Name); parentNode.Nodes.Add(tn); if (item.List != null) { BuildTreeView(item.List, tn); } } } } } sealed class Header { public string Name { get; set; } public List
List { get; set; } } } Собственно, если у Вас есть уже структура данных, то можете просто использовать метод для построения дерева. Мой пример выводит так:

Ответ 2



Складываешь всё в Dictionary с id в качестве ключа и всей записью в качестве значения. Через foreach проходишь по нему и добавляешь детей родительскому элементу, а все записи с пустым родителем складываешь в список. В итоге получится лес.

Комментариев нет:

Отправить комментарий