public IEnumerable <FileInfo> CollectFiles(string path, bool recurseSubfolders, IEnumerable <string> extensionsToCollect, bool ignoreFilter) { List <FileInfo> _matchingFiles = new List <FileInfo>(); try { //var files = from f in Directory.GetFiles(path, "*", recurseSubfolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly) //select new FileInfo(f); List <FileInfo> files = new List <FileInfo>(); FindFile(path, "*.*", files, recurseSubfolders, ignoreFilter, extensionsToCollect); foreach (FileInfo _fi in files) { // check if it is a dummy file if (FileManager.IsDummyFile(_fi.FullName)) { continue; } // filter out if it exists already if (!_matchingFiles.Contains(_fi, new FileInfoComparer()) && (extensionsToCollect != null && extensionsToCollect.Count() != 0 && extensionsToCollect.Contains("*" + _fi.Extension.ToLowerInvariant()))) { // check also filtering! bool _skip = false; UserOptions _options = FileManager.Configuration.Options; if (!ignoreFilter && _options.FileBrowserOptions.IsFilterActive()) { _skip = (_options.FileBrowserOptions.FilterWithoutMoviesheet && FileManager.Configuration.HasMoviesheet(_fi.FullName)) || (_options.FileBrowserOptions.FilterWithoutExtraMoviesheet && FileManager.Configuration.HasExtraMoviesheet(_fi.FullName)) || (_options.FileBrowserOptions.FilterWithoutMovieInfo && nfoHelper.HasMovieInfoFile(_fi.FullName)) || (_options.FileBrowserOptions.FilterWithoutExtSubtitles && MediaInfoManager.HasExternalSubtitles(_fi.FullName)) || (_options.FileBrowserOptions.FilterWithoutThumbnail && FileManager.Configuration.HasThumbnail(_fi.FullName)) || (_options.FileBrowserOptions.FilterWithoutMetadata && FileManager.Configuration.HasMoviesheetMetadata(_fi.FullName)) || (_options.FileBrowserOptions.FilterWithoutFolderJpg && FileManager.Configuration.HasFolderJpg(_fi.FullName)); } if (!_skip) { _matchingFiles.Add(_fi); } } } //_matchingFiles = Sort<FileInfo>(_matchingFiles).ToList<FileInfo>(); } catch (Exception ex) { Loggy.Logger.DebugException(string.Format("Exception collecting files from {0}:", path), ex); } return(_matchingFiles); }