.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); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д