J'ai un IEnumerable <DirectoryInfo> que je veux filtrer en utilisant un tableau d'expressions régulières pour trouver les correspondances potentielles. J'ai essayé de rejoindre mon répertoire et les chaînes regex en utilisant linq, mais je n'arrive pas à le faire correctement. Voici ce que j'essaie de faire ...Recherche de répertoires correspondants à l'aide d'une liste d'expressions régulières
string[] regexStrings = ... // some regex match code here.
// get all of the directories below some root that match my initial criteria.
var directories = from d in root.GetDirectories("*", SearchOption.AllDirectories)
where (d.Attributes & (FileAttributes.System | FileAttributes.Hidden)) == 0
&& (d.GetDirectories().Where(dd => (dd.Attributes & (FileAttributes.System | FileAttributes.Hidden)) == 0).Count() > 0// has directories
|| d.GetFiles().Where(ff => (ff.Attributes & (FileAttributes.Hidden | FileAttributes.System)) == 0).Count() > 0) // has files)
select d;
// filter the list of all directories based on the strings in the regex array
var filteredDirs = from d in directories
join s in regexStrings on Regex.IsMatch(d.FullName, s) // compiler doesn't like this line
select d;
... des suggestions pour que ça marche?
Ah, bon appel sur le Any(). Je n'arrête pas d'oublier ceux-là! –
Doh! - J'oublie tous ceux (Any & All) tout le temps aussi. –