Esempio n. 1
0
        private void PopulateChilds(Podr podr) //метод построения дерева дочерних СП (структуры банка в цело мначиная от рута)
        {
            IEnumerable <Podr> childs;         //список дочерних СП типа podr

            if (_childPodrsByCodSp.TryGetValue(podr.CodeSp, out childs))
            {                                       //рекурсия
                podr.Childs = childs.ToList();
                foreach (Podr child in podr.Childs) //для всех СП из  podr.Childs
                {
                    PopulateChilds(child);
                }
            }
        }
Esempio n. 2
0
        internal Podr CreateTree(List <Podr> podrs) //метод создания дерева
        {
            /* подразделения без уникальных номеров и правила их выделения*/
            var podrsWithNonUniqueCodeSp =
                podrs
                .GroupBy(p => p.CodeSp)
                .Where(g => g.Count() > 1)
                .Select(g => g.First().CodeSp)
                .ToArray();    //записали в массив

            _childPodrsByCodSp =
                podrs
                .ToDictionary(p => p.CodeSp, p => podrs.Where(p2 => p2.parentSP == p.CodeSp));
            /* в словарь записать те СП, у которых код родительского СП = коду текущего СП*/

            Podr root = podrs[0]; //выбрали начальное СП

            PopulateChilds(root);
            return(root);
        }