如何最有效地获取列表中的所有文件名,这些文件名以与预定义数组中的扩展名匹配的扩展名结尾?

How to most efficiently get all filenames in a list that end with extensions matching those in a predefined array?

具体来说,我有一个文件列表和一组压缩文件扩展名 - 我正在尝试将所有 zip 文件放在一个文件夹中以供以后处理。 我查看了其他几个 Whosebug 答案,但它们都涉及到用 or 语句分隔的一系列 "Contains" 语句。如果我想在运行时添加一个新的扩展怎么办?那对我来说是行不通的。

string[] zipExts = new string[] { "zip", "tar.gz", "rar", "jar", "iso" };

// PseudoCode : Get a list of files
files = getfiles()

// Existing Whosebug 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()));

不需要一系列 or 语句或循环的更有效方法是什么?

我自己的答案(我发现自己然后决定记录下来的那个,因为我在 Whosebug 上找不到它)是一个比我正在复制的问题的答案更清晰的版本,因为我 知道有更简洁的方法(只是不知道怎么做),所以我没有接受其他答案。

想了想想通了

var zips = files.FindAll(f => zipExts.Any(z => f.EndsWith(z));

在 post 时无法回答我的 post(没有看到按钮,愚蠢地认为我只是在 post 我的问题后回答) , 以记录知识(我在开始问这个问题之前找到了答案)。