public static ListingItem ConvertToListingItem(IEnumerable<FtpItem> inputItems, string separator) { var root = new ListingItem("Root", false); foreach (var item in inputItems) { var currentParent = root; foreach ( var pathSegment in item.FullPath.Remove(0, 1).Split(new[] {separator}, StringSplitOptions.None)) { var child = currentParent.Children.FirstOrDefault(t => t.Text == pathSegment); if (child == null) { child = new ListingItem(pathSegment, item.ItemType == FtpItemType.Directory); currentParent.Children.Add(child); } currentParent = child; } } return root; }
private void RecursiveAdd(ListingItem item, TreeNode target) { foreach (var child in item.Children) { if (!child.IsDirectory) continue; var childNode = new TreeNode(child.Text, 1, 1); target.Nodes.Add(childNode); RecursiveAdd(child, childNode); } }