Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to apply multiple search patterns with Directory.EnumerateFiles()?

Tags:

c#

linq

.net-4.0

I use below code for searching files in a directory(& it's sub-directories) with a specific extension:

Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1" , SearchOption.AllDirectories);

Now, I can have file with different extensions like ".ext1",".ext2", ".ext3". I would like to combine these extensions in my search pattern something like below:

Directory.EnumerateFiles(dir, Path.GetFileNameWithoutExtension(item) + ".ext1||.ext2" , SearchOption.AllDirectories);

Suggestions please?

like image 446
WpfBee Avatar asked Nov 15 '25 05:11

WpfBee


1 Answers

You could use a custom method that splits the pattern string and then calls 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;
}

By using yield you get the same lazy-evaluation behavior as with the original EnumerateFiles.

like image 96
adjan Avatar answered Nov 17 '25 19:11

adjan