C# Recherche de fichiers et de dossiers à l'exception de certains dossiers
Est-il possible d'exclure certains répertoires de SearchOption à l'aide de LINQ commande comme ceci
string path = "C:\SomeFolder";
var s1 = Directory.GetFiles(path , "*.*", SearchOption.AllDirectories);
var s2 = Directory.GetDirectories(path , "*.*", SearchOption.AllDirectories);
Le chemin est constitué de Sub1 et Sub2 Dossiers avec certains fichiers. J'ai besoin de les exclure de la recherche dans l'annuaire.
Grâce
Cela A Fonctionné:
string[] exceptions = new string[] { "c:\\SomeFolder\\sub1",
"c:\\SomeFolder\\sub2" };
var s1 = Directory.GetFiles("c:\\x86", "*.*",
SearchOption.AllDirectories).Where(d => exceptions.All(e =>
!d.StartsWith(e)));
Cette aidé avec des Exceptions
OriginalL'auteur Jaswanth Kumar | 2013-10-16
Vous devez vous connecter pour publier un commentaire.
Pas il n'y a pas pour autant que je sais. Mais vous pouvez utiliser très LINQ simple de le faire en une seule ligne.
Vous pouvez facilement combiner plusieurs exclure DIRs.
retourne chemins d'accès complets de tous les fichiers, donc en faisant un
Where
avecStartsWith()
essentiellement en retour ce que l'OP est à la recherche pour.Ah, oui. Simple et sympathique!
OriginalL'auteur dotNET
Vous ne pouvez pas faire exactement ce que vous voulez avec de simples méthodes LINQ. Vous aurez besoin d'écrire une routine récursive au lieu d'utiliser
SearchOption.AllDirectories
. La raison en est que vous voulez filtrer répertoires pas fichiers.Vous pouvez utiliser la méthode statique suivante, pour atteindre ce que vous voulez:
Que vous pouvez l'utiliser comme ceci:
Pourquoi la complexité ajoutée? Cette méthode évite de regarder à l'intérieur de répertoires que vous n'êtes pas intéressé. Le
SearchOption.AllDirectories
sera, comme son nom l'indique, de la recherche au sein de tous répertoires.Si vous n'êtes pas familier avec itérateur méthodes (la
yield return
syntaxe), ce qui peut être écrit différemment: il suffit de demander!Alternative
Cela a presque le même effet. Cependant, elle trouve toujours les fichiers dans les sous-répertoires des répertoires que vous voulez ignorer. Peut-être que c'est OK pour vous; le code est plus facile à suivre.
OriginalL'auteur Olly
essayer cette
OriginalL'auteur Aravindan Srinivasan
OriginalL'auteur Prasad