private void BuildTree()
        {
            CategoryTree = new CategoryNode();

            CategoryDto rootNode = NodeList.FirstOrDefault(o => o.ParentId == null);

            if (rootNode != null)
            {
                CategoryTree.Name = rootNode.Name;
                // add first level nodes
                foreach (CategoryDto item in NodeList.Where(o => object.Equals(o.ParentId, rootNode.Id)))
                {
                    // add node
                    CategoryNode node = new CategoryNode(item.Name, item.Id);
                    CategoryTree.SubNodes.Add(node);
                    // explorer next level
                    BuildSubTree(node, 1);
                }
            }
        }