我想搜索传递多个文件扩展名的文件,但我想将其发送到列表中。
我怎样才能以干净的方式处理这个问题?
//I wanna pass my list to the Where method
List<string> fileExtensionList
//this works fine
var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)
.Where(s => s.EndsWith(".jpg") || s.EndsWith(".png"));
感谢
答案 0 :(得分:5)
List<string> fileExtensionList = ...
var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)
.Where(fileName => fileExtensionList.Any(extension => fileName.EndsWith(extension)));
Any
是集合的扩展方法。如果集合中的任何项目符合您的条件,则返回true
。
答案 1 :(得分:5)
虽然您可以使用EndsWith
检查扩展名,但有更合适的方法可以使代码更简单:
var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)
.Where(s => fileExtensionList.Contains(Path.GetExtension(s)));