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

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

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

Есть такой вот класс:
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;
        }        
    }
Читая из SQL табличку, получаю лист (снимок1) А как теперь из этого сделать дерево? (снимок2)

Решение задачи: «.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);
            }

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


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

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

15   голосов , оценка 4.133 из 5
Похожие ответы