获取具有特定文件扩展名的路径的子目录

Kel*_*reu 2 .net c# directory file

我想知道是否有办法只检索具有某些扩展名的目录.

例如

List<string> directories = Directory.GetDirectories(sourceTextBox.Text, "*", SearchOption.AllDirectories).ToList();
Run Code Online (Sandbox Code Playgroud)

会给我在我给它的路径中的所有目录和子目录.但是我只希望它检索其中包含.jpg或.png文件的目录.

List<string> directories = Directory.GetDirectories(sourceTextBox.Text, "*.png", SearchOption.AllDirectories).ToList();
directories.addRange(Directory.GetDirectories(sourceTextBox.Text, "*.jpg", SearchOption.AllDirectories).ToList());
Run Code Online (Sandbox Code Playgroud)

我能做到这一点吗?

Chr*_*air 8

在性能方面没有任何保证,但是对于每个目录,您可以检查其文件以查看它是否包含具有匹配扩展名的文件:

List<string> imageDirectories = Directory.GetDirectories(sourceTextBox.Text, "*", SearchOption.AllDirectories)
    .Where(d => Directory.EnumerateFiles(d)
        .Select(Path.GetExtension)
        .Where(ext => ext == ".png" || ext == ".jpg")
        .Any())
    .ToList();
Run Code Online (Sandbox Code Playgroud)