.NET 4.x Сортировка и деревья - C#
Формулировка задачи:
Есть такой вот класс:
Читая из SQL табличку, получаю лист (снимок1)
А как теперь из этого сделать дерево? (снимок2)
Листинг программы
- public class FolderStructure
- {
- public String FolderTitle { get; set; }
- public String Parent1 { get; set; }
- public String Parent2 { get; set; }
- public String Parent3 { get; set; }
- public String Parent4 { get; set; }
- public String Parent5 { get; set; }
- public FolderStructure()
- {
- FolderTitle = "";
- Parent1 = "";
- Parent2 = "";
- Parent3 = "";
- Parent4 = "";
- Parent5 = "";
- }
- public FolderStructure(string _parent1 = null, string _parent2 = null, string _parent3 = null, string _parent4 = null, string _parent5 = null )
- {
- Parent1 = string.IsNullOrEmpty(_parent1) ? string.Empty : _parent1;
- Parent2 = string.IsNullOrEmpty(_parent2) ? string.Empty : _parent2;
- Parent3 = string.IsNullOrEmpty(_parent3) ? string.Empty : _parent3;
- Parent4 = string.IsNullOrEmpty(_parent4) ? string.Empty : _parent4;
- Parent5 = string.IsNullOrEmpty(_parent5) ? string.Empty : _parent5;
- }
- }
Решение задачи: «.NET 4.x Сортировка и деревья»
textual
Листинг программы
- var kits1 = NewBase.Where(ee=>!string.IsNullOrEmpty(ee.Parent1)).Select(kit => kit.Parent1).Distinct().ToList();
- for (int n = 0; n < kits1.Count; n++)
- {
- string current1 = kits1[n];
- KitTreeModel tvr = new KitTreeModel()
- {
- DisplayText = current1,
- Tag = new FolderStructure(_parent1: current1)
- };
- var kits2 = NewBase.Where(ee => ee.Parent1 == current1 && !string.IsNullOrEmpty(ee.Parent2)).Select(kit => kit.Parent2).Distinct().ToList();
- for (int i = 0; i < kits2.Count; i++)
- {
- string current2 = kits2[i];
- KitTreeModel tvr2 = new KitTreeModel()
- {
- DisplayText = current2,
- Tag = new FolderStructure(_parent1: current1, _parent2: current2)
- };
- var kits3 = NewBase.Where(ee => ee.Parent1 == current1 && ee.Parent2==current2 && !string.IsNullOrEmpty(ee.Parent3)).Select(kit => kit.Parent3).Distinct().ToList();
- for (int j = 0; j < kits3.Count; j++)
- {
- string current3 = kits3[j];
- KitTreeModel tvr3 = new KitTreeModel()
- {
- DisplayText = current3,
- Tag = new FolderStructure(_parent1: current1, _parent2: current2, _parent3: current3)
- };
- var kits4 = NewBase.Where(ee => ee.Parent1 == current1 && ee.Parent2 == current2 && ee.Parent3 == current3 && !string.IsNullOrEmpty(ee.Parent4)).Select(kit => kit.Parent4).Distinct().ToList();
- for (int k = 0; k < kits4.Count; k++)
- {
- string current4 = kits4[k];
- KitTreeModel tvr4 = new KitTreeModel()
- {
- DisplayText = current4,
- Tag = new FolderStructure(_parent1: current1, _parent2: current2, _parent3: current3, _parent4: current4)
- };
- var kits5 = NewBase.Where(ee => ee.Parent1 == current1 && ee.Parent2 == current2 && ee.Parent3 == current3 && ee.Parent4 == current4 && !string.IsNullOrEmpty(ee.Parent5)).Select(kit => kit.Parent5).Distinct().ToList();
- for (int l = 0; l < kits5.Count; l++)
- {
- string current5 = kits5[l];
- KitTreeModel tvr5 = new KitTreeModel()
- {
- DisplayText = current5,
- Tag = new FolderStructure(_parent1: current1, _parent2: current2, _parent3: current3, _parent4: current4, _parent5: current5)
- };
- tvr4.AddChild(tvr5);
- }
- tvr3.AddChild(tvr4);
- }
- tvr2.AddChild(tvr3);
- }
- tvr.AddChild(tvr2);
- }
- newTree.Add(tvr);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д