我使用下面的代码搜索具有特定扩展名的目录(及其子目录)中的文件:
Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1" , SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)
现在,我可以使用不同的扩展名文件,如".ext1",".ext2",".ext3".我想在我的搜索模式中结合这些扩展,如下所示:
Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1||.ext2" , SearchOption.AllDirectories);
Run Code Online (Sandbox Code Playgroud)
建议好吗?
您可以使用自定义方法拆分模式字符串,然后调用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;
}
Run Code Online (Sandbox Code Playgroud)
通过使用,yield您可以获得与原始相同的惰性评估行为EnumerateFiles.