public IReadOnlyCollection <FolderEntryViewModel> Create(IReadOnlyCollection <DirectoryDto> dtos) { var root = new FolderEntryViewModel(FolderEntryViewModelType.Directory, string.Empty, string.Empty, string.Empty, string.Empty); var sortedDtos = dtos.OrderBy(f => f.DirectoryName); foreach (var directory in sortedDtos) { CreateTreeViewItemsRecursive(directory, root, true); } return(root.SubEntries); }
private void CreateTreeViewItemsRecursive(DirectoryDto directory, FolderEntryViewModel parentVm, bool isTopLevel) { var directoryVm = CreateFromDirectory(directory, isTopLevel); // Add the Files as SubEntries var fileViewModels = directory .Files .Select(CreateFromFile) .OrderBy(f => f.Name) .ToList(); directoryVm.SubEntries.AddRange(fileViewModels); // Add the Directory as SubEntry parentVm.SubEntries.Add(directoryVm); foreach (var subDirectory in directory.SubDirectories) { CreateTreeViewItemsRecursive(subDirectory, directoryVm, false); } }