我创建了一些辅助方法来解决这个问题,这是我在今年早些时候写的博客。
一个版本使用regex模式
.mp3|.mp4,另一个版本使用字符串列表并并行运行。
public static class MyDirectory{ // Regex version public static IEnumerable<string> GetFiles(string path, string searchPatternexpression = "", SearchOption searchOption = SearchOption.TopDirectoryOnly) { Regex reSearchPattern = new Regex(searchPatternexpression, RegexOptions.IgnoreCase); return Directory.EnumerateFiles(path, "*", searchOption).Where(file => reSearchPattern.IsMatch(Path.GetExtension(file))); } // Takes same patterns, and executes in parallel public static IEnumerable<string> GetFiles(string path, string[] searchPatterns, SearchOption searchOption = SearchOption.TopDirectoryOnly) { return searchPatterns.AsParallel() .SelectMany(searchPattern => Directory.EnumerateFiles(path, searchPattern, searchOption)); }}


