public List <FastFileInfo> GetAllFiles(SearchCriteria criteria) { //string[] fileEntries = null; IEnumerable <FastFileInfo> files = null; //var directory = new DirectoryInfo(criteria.TargetFolder); var searchPattern = criteria.SearchPattern.Equals(string.Empty) ? "*.*" : criteria.SearchPattern; var searchOption = criteria.IncludeSubfolders ? SearchOption.AllDirectories : SearchOption.TopDirectoryOnly; if (criteria.UseDateRange) { var startTime = new DateTime(); var endTime = DateTime.Now; if (criteria.DateRangeToday) { startTime = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); } else if (criteria.DateRangeLast4Hours) { startTime = DateTime.Now.AddHours(-4); } else if (criteria.DateRangeLastHour) { startTime = DateTime.Now.AddHours(-1); } else if (criteria.DateRangeJustNow) { startTime = DateTime.Now.AddMinutes(-2); } else // Use from and to date { startTime = criteria.StartTime ?? DateTime.MinValue; endTime = criteria.EndTime ?? DateTime.MinValue; } // Source: https://sourceforge.net/projects/fastfileinfo/ //files = directory.GetFiles(searchPattern, searchOption) // .Where(f => f.LastWriteTime >= startTime && f.LastWriteTime <= endTime); files = FastFileInfo.EnumerateFiles(criteria.TargetFolder, searchPattern, searchOption) .Where(f => f.LastWriteTime >= startTime && f.LastWriteTime <= endTime); } else { //files = directory.GetFiles(searchPattern, searchOption); files = FastFileInfo.EnumerateFiles(criteria.TargetFolder, searchPattern, searchOption); } return(files.ToList()); }