C# - посещение только определенных c файлов в каталоге - PullRequest
0 голосов
/ 05 августа 2020

Я использую эту функцию для просмотра всех файлов в каталоге и выполнения кода для каждого файла только в том случае, если он имеет определенное расширение c, например .txt в примере. Я также исключаю те, которые заканчиваются на .png.

foreach (string file in Directory.EnumerateFiles(rootDir).Where(
                f => (f.ToLower().EndsWith(".txt")) //Include
                     && !(f.ToLower().EndsWith(".png")) //Exclude
                        ).ToList())
                {
                //Do something
                }

Этот код работает нормально, но что, если мне придется иметь дело с несколькими расширениями?

Я бы внес в белый список / занесение в черный список каждого расширения, записывающего одну и ту же строку кода снова и снова.

Я уверен, что существует умный способ. Идея состоит в том, чтобы сохранить все желаемые и нежелательные расширения в массиве.

Как можно улучшить приведенный выше код для этого?

1 Ответ

2 голосов
/ 05 августа 2020

Можно сделать примерно так:

var whiteList = new List<string>{".txt"};
var blackList = new List<string>{".png"};

foreach (string file in 
            Directory
            .EnumerateFiles(rootDir)
            .Where(
                f => whiteList.Any(ext => (f.ToLower().EndsWith(ext))  //Either use a white list
                //f => !(blackList.Any(ext => (f.ToLower().EndsWith(ext))) //Or use a black list
            ).ToList())
            
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...