C# 使用Directory.GetFiles的多个筛选器?

C# 使用Directory.GetFiles的多个筛选器?,c#,.net,directory,getfiles,C#,.net,Directory,Getfiles,我试图在Directory.GetFiles()命令中使用多个过滤器 假设我想同时匹配.html和.css文件。我用这个: Directory.GetFiles(path,"*.html|*.css"); 然而,我没有看到任何文档支持这一点,它最终与HTML或CSS文件都不匹配。有什么我遗漏的吗 Directory.GetFiles函数不支持多个筛选器。我的解决方案: string patter = "*.jpg|*.png|*.gif"; string[] filters = patter.

我试图在Directory.GetFiles()命令中使用多个过滤器

假设我想同时匹配.html和.css文件。我用这个:

Directory.GetFiles(path,"*.html|*.css");

然而,我没有看到任何文档支持这一点,它最终与HTML或CSS文件都不匹配。有什么我遗漏的吗

Directory.GetFiles函数不支持多个筛选器。我的解决方案:

string patter = "*.jpg|*.png|*.gif";
string[] filters = patter.Split('|');
foreach(string filter in filters )
{
  // call Directory.GetFiles(path, filter) here;
}

Directory.GetFiles函数不支持多个筛选器。我的解决方案:

string patter = "*.jpg|*.png|*.gif";
string[] filters = patter.Split('|');
foreach(string filter in filters )
{
  // call Directory.GetFiles(path, filter) here;
}

还有一种下降解决方案可避免foreach循环(借助Linq):


还有一种下降解决方案可避免foreach循环(借助Linq):


@赛义德:对不起,这只是我问题中的一个输入错误。这是我源代码中的一个点。@Saeed抱歉,这只是我问题中的一个输入错误。这是我源代码中的一个点,它非常低效。调用Directory.GetFiles(path)一次,然后用LINQ或其他方法过滤结果alike@ppiotrowicz:效率如何?如果使用LINQ方法,则必须检索目录中所有文件的列表,这可能是一个很长的列表。使用这种方法,您只能检索相关的条目。@rune这取决于,如果GetFiles由于本机Win32调用而变慢,那么只需获取所有文件的列表并在内存中进行筛选,就可以轻松地加快速度。但它需要分析以确定什么更快。这是从T4模板运行的,所以只要不是非常慢就没有多大关系。@rune它效率很低,因为您仍然需要遍历所有文件(在您的情况下需要遍历几次),并且需要删除重复项(当然,如果按扩展名搜索,则不需要)1.这是非常低效的。调用Directory.GetFiles(path)一次,然后用LINQ或其他方法过滤结果alike@ppiotrowicz:效率如何?如果使用LINQ方法,则必须检索目录中所有文件的列表,这可能是一个很长的列表。使用这种方法,您只能检索相关的条目。@rune这取决于,如果GetFiles由于本机Win32调用而变慢,那么只需获取所有文件的列表并在内存中进行筛选,就可以轻松地加快速度。但它需要分析以确定什么更快。这是从T4模板运行的,所以只要不是非常慢就没有多大关系。@rune它效率很低,因为您仍然需要遍历所有文件(在您的情况下需要遍历几次),并且需要删除重复的文件(当然,如果按扩展名搜索,则不需要)。