首页 > 解决方案 > 如何使用 Directory.EnumerateFiles() 应用多种搜索模式?

问题描述

我使用下面的代码在具有特定扩展名的目录(&它的子目录)中搜索文件:

Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1" , SearchOption.AllDirectories);

现在,我可以拥有具有不同扩展名的文件,例如“.ext1”、“.ext2”、“.ext3”。我想在我的搜索模式中结合这些扩展,如下所示:

Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1||.ext2" , SearchOption.AllDirectories);

请问有什么建议吗?

标签: c#linq.net-4.0

解决方案


您可以使用拆分模式字符串的自定义方法,然后调用EnumerateFiles

public static IEnumerable<string> MultiEnumerateFiles(string path, string patterns)
{
    foreach (var pattern in patterns.Split('|'))
        foreach (var file in Directory.EnumerateFiles(path, pattern, SearchOption.AllDirectories))
            yield return file;
}

通过使用yield,您可以获得与原始EnumerateFiles.


推荐阅读