Tengo el siguiente código:Cómo filtrar Directory.EnumerateFiles con múltiples criterios?
List<string> result = new List<string>();
foreach (string file in Directory.EnumerateFiles(path,"*.*",
SearchOption.AllDirectories)
.Where(s => s.EndsWith(".mp3") || s.EndsWith(".wma")))
{
result.Add(file);
}
Trabaja muy bien y hace lo que necesito. Excepto por una pequeña cosa. Me gustaría encontrar una mejor manera de filtrar en múltiples extensiones. Me gustaría utilizar una matriz de cadenas con filtros como esto:
string[] extensions = { "*.mp3", "*.wma", "*.mp4", "*.wav" };
¿Cuál es la forma más eficiente de hacer esto utilizando .NET Framework 4.0/LINQ? ¿Alguna sugerencia?
lo agradecería cualquier ayuda ser un programador de vez en cuando :-)
usted debe considerar el funcionamiento de cada búsqueda de extensión en paralelo. Creé algunos métodos útiles de ayuda en mi respuesta. Uno que toma una expresión regular, y uno que toma una lista de cuerdas. –
Esta es una * muy * vieja pregunta (ya respondida adecuadamente por @MikaelSvenson), pero otra opción es usar la extensión Enumerable .Union(), así: foreach (archivo var en Directory.EnumerateFiles (ruta, "* .mp3 ", SearchOption.AllDirectories) .Union (Directory.EnumerateFiles (ruta," * .wma ", SearchOption.AllDirectories)) {...} – Kirkaiya