uipath pattern paths from files example all c# linq directory getfiles

c# - pattern - Directory.GetFiles de cierta extensión



string search pattern c# (3)

¿ Directory.GetFiles(String, String) sobrecarga Directory.GetFiles(String, String) ya no hace eso? Solo haría Directory.GetFiles(dir, "*.jpg", SearchOption.AllDirectories)

Si desea ponerlos en una lista, simplemente reemplace el "*.jpg" con una variable que itere sobre una lista y agregue los resultados en un conjunto de resultados general. Mucho más claro que individualmente especificándolos. =)

Algo como...

foreach(String fileExtension in extensionList){ foreach(String file in Directory.GetFiles(dir, fileExtension, SearchOption.AllDirectories)){ allFiles.Add(file); } }

(Si sus directorios son grandes, usar EnumerateFiles lugar de GetFiles puede ser potencialmente más eficiente)

¿Hay alguna manera de simplificar esta expresión de linq o hay una forma mejor de hacerlo?

Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories) .Where(s => s.EndsWith(".jpg", StringComparison.OrdinalIgnoreCase) || s.EndsWith(".gif", StringComparison.OrdinalIgnoreCase) || s.EndsWith(".png", StringComparison.OrdinalIgnoreCase) || ...);

Básicamente quiero devolver todos los archivos de una cierta extensión. Desafortunadamente, este método no es muy flexible. Preferiría poder agregar extensiones a una lista y hacer que Directory.GetFiles devuelva esas extensiones. ¿Es eso posible?


Lo habría hecho usando solo una línea como

List<string> imageFiles = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories) .Where(file => new string[] { ".jpg", ".gif", ".png" } .Contains(Path.GetExtension(file))) .ToList();


Si desea filtrar en LINQ, puede hacerlo así:

var ext = new List<string> {".jpg", ".gif", ".png"}; var myFiles = Directory.GetFiles(dir, "*.*", SearchOption.AllDirectories) .Where(s => ext.Contains(Path.GetExtension(s)));

Ahora ext contiene una lista de extensiones permitidas; puede agregar o eliminar elementos de él según sea necesario para un filtrado flexible.