Example #1
0
            public static void GetTreeRecursive(ManagedObjectNode parent, List <ManagedObject> mObjects, int level)
            {
                var groups = mObjects.GroupBy(x => x.hierachy[level]).ToList();

                if (groups.Count() > 0)
                {
                    foreach (var group in groups)
                    {
                        ManagedObjectNode newNode = new ManagedObjectNode();
                        if (parent.children == null)
                        {
                            parent.children = new Dictionary <string, ManagedObjectNode>();
                        }
                        parent.children.Add(group.Key, newNode);
                        if (level < maxLevels - 1)
                        {
                            GetTreeRecursive(newNode, group.ToList(), level + 1);
                        }
                        else
                        {
                            newNode.leaves = mObjects;
                        }
                    }
                }
            }
Example #2
0
        static void Main(string[] args)
        {
            XmlReader reader = XmlReader.Create(FILENAME);

            while (!reader.EOF)
            {
                if (reader.Name != "managedObject")
                {
                    reader.ReadToFollowing("managedObject");
                }
                if (!reader.EOF)
                {
                    XElement      managedObject = (XElement)XElement.ReadFrom(reader);
                    ManagedObject newObject     = new ManagedObject();
                    ManagedObject.objects.Add(newObject);
                    newObject.mClass     = (string)managedObject.Attribute("class");
                    newObject.distName   = (string)managedObject.Attribute("distName");
                    newObject.hierachy   = newObject.distName.Split(new char[] { '/' });
                    newObject.objectdict = managedObject.Elements()
                                           .GroupBy(x => (string)x.Attribute("name"), y => (string)y)
                                           .ToDictionary(x => x.Key, y => y.FirstOrDefault());
                }
            }
            ManagedObjectNode.CreateTree();
        }
            public static void GetTreeRecursive(ManagedObjectNode parent, List <ManagedObject> mObjects, int level)
            {
                var groups = mObjects.GroupBy(x => x.hierachy[level]).ToList();

                foreach (var group in groups)
                {
                    ManagedObjectNode newNode = new ManagedObjectNode();
                    if (parent.children == null)
                    {
                        parent.children = new Dictionary <string, ManagedObjectNode>();
                    }
                    parent.children.Add(group.Key, newNode);
                    newNode.leaves = mObjects.Where(x => x.hierachy.Count() - 1 == level).ToList();
                    List <ManagedObject> hasChildren = mObjects.Where(x => x.hierachy.Count() - 1 > level).ToList();
                    if (hasChildren.Count() > 0)
                    {
                        GetTreeRecursive(newNode, hasChildren, level + 1);
                    }
                }
            }