Существует также решение спуска, которое, как представляется, не имеет какой-либо памяти или производительности накладных расходов и довольно элегантно:
string[] filters = new[]{"*.jpg", "*.png", "*.gif"};
string[] filePaths = filters.SelectMany(f => Directory.GetFiles(basePath, f)).ToArray();