c# - 如何使用 Directory.EnumerateFiles() 应用多个搜索模式?

标签 c# linq .net-4.0

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

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

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

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

有什么建议吗?

最佳答案

您可以使用自定义方法来拆分模式字符串,然后调用 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 相同的惰性求值行为。

关于c# - 如何使用 Directory.EnumerateFiles() 应用多个搜索模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50168034/

相关文章:

c# - VisualStudio使用正则表达式搜索文本查找方法

c# - 使用子类反序列化 JSON 数据

c# - 为什么这种隐式转换是不可能的?

C# HashSet 在每个 Add 上分配内存,即使在容量范围内

c# - 列表的返回类型

c# - 使用 var,访问范围外的内容,可能 "cast by example??"

c# - Select 中的 LINQ to SQL 反射

c# - 通过字符串从 C# 动态对象获取属性值(反射?)

c# - 如何使用 C# 4.0 中的 AssemblyBuilder 生成虚拟属性?

c# - Microsoft 是否修复了 .NET 4.0 中的 Linq to Entities 性能问题?