public List <DiskInfo> GetPathDirectoriesAndFiles(string path, string orderBy, int skip, int take, out int count, bool byFile = true, string searchPatern = "*", bool allDirectories = false, bool createThumbnail = false) { path = AuthorizeManager.AuthorizeActionOnPath(path.Replace(Config.UrlDelimeter, Helper.RootUrl), ActionKey.ReadFromDisk); var diskInfos = new List <DiskInfo>(); var searchOption = allDirectories ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; var directories = _fileSystemManager.GetDirectories(path, searchPatern, searchOption); var files = _fileSystemManager.GetFiles(path, searchPatern, searchOption); var id = 0; foreach (var directory in directories) { diskInfos.Add(new DiskInfo() { Id = ++id, Name = directory.Name, IsFolder = true, ModifieDateTime = directory.LastWriteTimeUtc, ModifieLocalDateTime = LanguageManager.ToLocalDateTime(directory.LastWriteTimeUtc) }); } var rootPath = HostingEnvironment.ApplicationHost.GetPhysicalPath(); if (byFile) { foreach (var file in files) { diskInfos.Add(new DiskInfo() { Id = ++id, Name = file.Name, FileType = _fileSystemManager.FileExtensionToFileType(file.Extension), FullName = file.FullName, ModifieDateTime = file.LastWriteTimeUtc, Size = file.Length, ModifieLocalDateTime = LanguageManager.ToLocalDateTime(file.LastWriteTimeUtc) }); } } count = diskInfos.Count(); var fileAndFolders = diskInfos.AsQueryable().OrderBy(orderBy) .Skip(skip) .Take(take).ToList(); if (createThumbnail) { var t = new Thread(tr => CreateThumbnail(fileAndFolders.Where(fl => fl.IsFolder == false && fl.FileType == 1).ToList())); t.Start(); } return(fileAndFolders); }