示例#1
0
        public static Node ResolveChildren(IEnumerable<string> splitNodes, Node node)
        {
            string currentParentNode = splitNodes.First();
            foreach (string splitNode in splitNodes)
            {
                if (node.Children.Any())
                {
                    if (!NodeExistsInHierachy(node.Children, splitNode))
                    {
                        Node matchingParentNode = FindMatchingNodeInHierarchy(node.Children, currentParentNode);
                        if (matchingParentNode == null)
                        {
                            node.Children.Add(new Node(splitNode, currentParentNode));
                        }
                        else
                        {
                            matchingParentNode.Children.Add(new Node(splitNode, currentParentNode));
                        }
                    }
                }
                else
                {
                    node.Children.Add(new Node(splitNode, currentParentNode));
                }
                currentParentNode = splitNode;
            }

            return node;
        }
示例#2
0
        private static void Main(string[] args)
        {
            //OriginalApproach();

            var sharepointData = new List<KeyValuePair<string, string>>();
            sharepointData.Add(new KeyValuePair<string, string>("/Trades Database", "/Trades Database/Admin"));
            sharepointData.Add(new KeyValuePair<string, string>("/Trades Database", "/Trades Database/Something"));
            sharepointData.Add(new KeyValuePair<string, string>("/Trades Database/Something",
                "/Trades Database/Something/doc1.txt"));
            sharepointData.Add(new KeyValuePair<string, string>("/Trades Database/Something",
                "/Trades Database/Something/blah.txt"));
            sharepointData.Add(new KeyValuePair<string, string>("/blah", "/blah/Folder1"));
            sharepointData.Add(new KeyValuePair<string, string>("/blah/Folder1", "/blah/Folder1/wow"));
            sharepointData.Add(new KeyValuePair<string, string>("/blah/Folder1/wow", "/blah/Folder1/wow/hellothere.txt"));
            sharepointData.Add(new KeyValuePair<string, string>("/Yolo", "/Yolo/Something"));

            var tree = new Node();

            foreach (var sharePointListItem in sharepointData)
            {
                var splitNodes = sharePointListItem.Key.Split('/');
                var filterNodes = FilterNodes(splitNodes);
                tree = NodeResolver.ResolveChildren(filterNodes, tree);

                splitNodes = sharePointListItem.Value.Split('/');
                filterNodes = FilterNodes(splitNodes);
                tree = NodeResolver.ResolveChildren(filterNodes, tree);
            }
            if (tree.Children != null)
            {
                var raw = JsonConvert.SerializeObject(tree);
                var json = JsonConvert.DeserializeObject<Noded>(raw);

                _finalJson = JsonConvert.SerializeObject(json);
                _finalJson = _finalJson.Replace("\"Name\"", "text");
                _finalJson = _finalJson.Replace("\"Children\"", "items");
                _finalJson = _finalJson.Replace("\"Children\": []", "");
            }
            Console.WriteLine("Final Json---> {0}", _finalJson);
            Console.ReadKey();
        }