Не получается исключить папки из поиска

Список папок которые нужно обойти при поиске (не показывать их)

public static readonly string[] BypassDir = new string[]
{
   "Microsoft", "History", "Temp", 
};

Метод которым ищу файлы с "обходом"

public static List<string> GetAllFiles(string path, string pattern, SearchOption so = SearchOption.AllDirectories)
{
   var files = new List<string>();

   try
   {
       foreach (string file in Directory.EnumerateFiles(path, pattern, so))
       {
          var fileInfo = new FileInfo(file);
          files.Add(file);          
       }
       foreach (string fl in Directory.EnumerateDirectories(path, "*", so))
       {
          if (!BypassDir.Contains(fl, StringComparer.OrdinalIgnoreCase))
          //if (!BypassDir.Any(ext => ext != Path.GetExtension(fl)))
          {
             files.AddRange(GetAllFiles(fl, pattern, so));
          }
       }
   }
       catch { }
       return files;
}

Но при сканирование всё ровно проходит папки, как исключить их правильно?


Ответы (1 шт):

Автор решения: Qwertiy
if (!BypassDir.Contains(fl, StringComparer.OrdinalIgnoreCase))
if (!BypassDir.Contains(Path.GetFileName(fl), StringComparer.OrdinalIgnoreCase))

А вообще, лучше сделать BypassDir не массивом, а Setом.

→ Ссылка