Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何最有效地获取列表中以扩展名结尾并与预定义数组中的扩展名匹配的所有文件名?_C#_List_Search_Optimization_Findall - Fatal编程技术网

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

C# 如何最有效地获取列表中以扩展名结尾并与预定义数组中的扩展名匹配的所有文件名?,c#,list,search,optimization,findall,C#,List,Search,Optimization,Findall,具体地说,我有一个文件列表和一个压缩文件扩展名数组——我正在尝试将所有zip文件放在一个文件夹中,以便以后处理我回顾了其他几个StackOverflow答案,但它们都涉及到一系列“包含”语句,以or语句分隔。如果我想在运行时添加一个新的扩展怎么办?那对我来说是行不通的 string[] zipExts = new string[] { "zip", "tar.gz", "rar", "jar", "iso" }; // PseudoCode : Get a list of files file

具体地说,我有一个文件列表和一个压缩文件扩展名数组——我正在尝试将所有zip文件放在一个文件夹中,以便以后处理我回顾了其他几个StackOverflow答案,但它们都涉及到一系列“包含”语句,以or语句分隔。如果我想在运行时添加一个新的扩展怎么办?那对我来说是行不通的

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()));
不需要一系列or语句或循环的更有效的方法是什么


我自己的答案(我发现自己当时决定记录的答案,因为我在StackOverflow上找不到它)比我复制的问题的答案更简洁,因为我知道有一种更简洁的方法来做(只是不知道如何做),所以我没有接受其他答案。

我想了想才明白

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

发帖时无法回答我的帖子(没有看到按钮,愚蠢地认为我发帖后必须回答),以记录知识(我在开始提问之前找到了答案)。

1.5分钟。你在1.5分钟内回答了自己的问题。你到底在问什么?如何仅获取与特定扩展名匹配的文件?如果您想知道做某事的最佳方式是什么,那么对于堆栈溢出来说,这是一个离题的问题