如何从列表中搜索哪个lambda?

Rol*_*oll 1 c# generics lambda

我想搜索通过多个文件扩展名的文件,但我想将其发送到列表中.

我怎样才能以干净的方式处理这个问题?

//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"));
Run Code Online (Sandbox Code Playgroud)

谢谢

ope*_*wix 5

List<string> fileExtensionList = ...

var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)
    .Where(fileName => fileExtensionList.Any(extension => fileName.EndsWith(extension)));
Run Code Online (Sandbox Code Playgroud)

Any是集合的扩展方法.true如果集合中的任何项目符合您的条件,它将返回.


小智 5

虽然您可以使用EndsWith检查扩展,但有更合适的方法可以使代码更简单:

var files = Directory.EnumerateFiles("C:\\path", "*.*", SearchOption.AllDirectories)
        .Where(s => fileExtensionList.Contains(Path.GetExtension(s)));
Run Code Online (Sandbox Code Playgroud)