.NET 4.x Сортировка и деревья - C#

Узнай цену своей работы

Формулировка задачи:

Есть такой вот класс:
Листинг программы
  1. public class FolderStructure
  2. {
  3. public String FolderTitle { get; set; }
  4. public String Parent1 { get; set; }
  5. public String Parent2 { get; set; }
  6. public String Parent3 { get; set; }
  7. public String Parent4 { get; set; }
  8. public String Parent5 { get; set; }
  9.  
  10. public FolderStructure()
  11. {
  12. FolderTitle = "";
  13. Parent1 = "";
  14. Parent2 = "";
  15. Parent3 = "";
  16. Parent4 = "";
  17. Parent5 = "";
  18. }
  19. public FolderStructure(string _parent1 = null, string _parent2 = null, string _parent3 = null, string _parent4 = null, string _parent5 = null )
  20. {
  21. Parent1 = string.IsNullOrEmpty(_parent1) ? string.Empty : _parent1;
  22. Parent2 = string.IsNullOrEmpty(_parent2) ? string.Empty : _parent2;
  23. Parent3 = string.IsNullOrEmpty(_parent3) ? string.Empty : _parent3;
  24. Parent4 = string.IsNullOrEmpty(_parent4) ? string.Empty : _parent4;
  25. Parent5 = string.IsNullOrEmpty(_parent5) ? string.Empty : _parent5;
  26. }
  27. }
Читая из SQL табличку, получаю лист (снимок1) А как теперь из этого сделать дерево? (снимок2)

Решение задачи: «.NET 4.x Сортировка и деревья»

textual
Листинг программы
  1. var kits1 = NewBase.Where(ee=>!string.IsNullOrEmpty(ee.Parent1)).Select(kit => kit.Parent1).Distinct().ToList();
  2.            
  3.             for (int n = 0; n < kits1.Count; n++)
  4.             {
  5.                 string current1 = kits1[n];
  6.                 KitTreeModel tvr = new KitTreeModel()
  7.                 {
  8.                     DisplayText = current1,
  9.                     Tag = new FolderStructure(_parent1: current1)
  10.                 };
  11.                 var kits2 = NewBase.Where(ee => ee.Parent1 == current1 && !string.IsNullOrEmpty(ee.Parent2)).Select(kit => kit.Parent2).Distinct().ToList();
  12.                 for (int i = 0; i < kits2.Count; i++)
  13.                 {
  14.                     string current2 = kits2[i];
  15.                     KitTreeModel tvr2 = new KitTreeModel()
  16.                     {
  17.                         DisplayText = current2,
  18.                         Tag = new FolderStructure(_parent1: current1, _parent2: current2)
  19.                     };
  20.                     var kits3 = NewBase.Where(ee => ee.Parent1 == current1 && ee.Parent2==current2 && !string.IsNullOrEmpty(ee.Parent3)).Select(kit => kit.Parent3).Distinct().ToList();
  21.  
  22.                     for (int j = 0; j < kits3.Count; j++)
  23.                     {
  24.                         string current3 = kits3[j];
  25.                         KitTreeModel tvr3 = new KitTreeModel()
  26.                         {
  27.                             DisplayText = current3,
  28.                             Tag = new FolderStructure(_parent1: current1, _parent2: current2, _parent3: current3)
  29.                         };
  30.                         var kits4 = NewBase.Where(ee => ee.Parent1 == current1 && ee.Parent2 == current2 && ee.Parent3 == current3 && !string.IsNullOrEmpty(ee.Parent4)).Select(kit => kit.Parent4).Distinct().ToList();
  31.                         for (int k = 0; k < kits4.Count; k++)
  32.                         {
  33.                             string current4 = kits4[k];
  34.                             KitTreeModel tvr4 = new KitTreeModel()
  35.                             {
  36.                                 DisplayText = current4,
  37.                                 Tag = new FolderStructure(_parent1: current1, _parent2: current2, _parent3: current3, _parent4: current4)
  38.                             };
  39.                             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();
  40.                             for (int l = 0; l < kits5.Count; l++)
  41.                             {
  42.                                 string current5 = kits5[l];
  43.                                 KitTreeModel tvr5 = new KitTreeModel()
  44.                                 {
  45.                                     DisplayText = current5,
  46.                                     Tag = new FolderStructure(_parent1: current1, _parent2: current2, _parent3: current3, _parent4: current4, _parent5: current5)
  47.                                 };
  48.                                 tvr4.AddChild(tvr5);
  49.                             }
  50.                             tvr3.AddChild(tvr4);
  51.                         }
  52.                         tvr2.AddChild(tvr3);
  53.                     }
  54.                     tvr.AddChild(tvr2);
  55.                 }
  56.                 newTree.Add(tvr);
  57.             }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.133 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы