В частности, у меня есть список файлов и массив расширений сжатых файлов — я пытаюсь получить все zip-файлы в папке для последующей обработки. Я просмотрел пару других ответов StackOverflow, но все они включали серию операторов «Содержит», разделенных операторами или. Что делать, если я хочу добавить новое расширение во время выполнения? Это просто не сработает для меня.
string[] zipExts = new string[] { "zip", "tar.gz", "rar", "jar", "iso" };
// PseudoCode : Get a list of files
files = getfiles()
// Existing StackOverflow answers - their suggested way of doing things
var zips = files.FindAll(f => f.ToLower().Contains(zipExts[0].ToLower()) ||
f.ToLower().Contains(zipExts[1].ToLower()) ||
f.ToLower().Contains(zipExts[2].ToLower()) ||
f.ToLower().Contains(zipExts[3].ToLower()) ||
f.ToLower().Contains(zipExts[4].ToLower()));
Каков более эффективный способ сделать это, не требующий серии или операторов или цикла?
Мой собственный ответ (тот, который я нашел сам, а затем решил задокументировать, потому что я не смог найти его в StackOverflow) является еще более чистой версией, чем ответ на вопрос, который я дублирую, потому что я знал, что более краткий способ сделать это (просто не знал, как), поэтому я не принял другие ответы.