2016-05-25 20 views
-4

So jetzt habe ich eine Liste von Verzeichnissen, die ich wollte durch ein Regex-Muster und eine Linq-Filterung. Was ich brauche, um Ordner zu bekommen, die eine bestimmte Anzahl von Verzeichnissen enthalten und die ohne 1 überspringen und prüfen, ob meine Verzeichnisinformationen leer sind oder nicht. Irgendwelche Vorschläge ? Also das ist, was ich bisher habeErhalten Sie Ordner, die eine bestimmte Anzahl von Verzeichnissen enthalten

DirectoryInfo root = neue DirectoryInfo (@ "C: \ Users \ jphillips \ Desktop \ test"); var dirs = neue Liste(); dirs = root.GetDirectories ("*", SearchOption.AllDirectories) .Where (d => reg.IsMatch (d.Name)). Where ((d =>. D.FullName.Endswith ("TESTS"))) .Where (d => d.GetFiles(). Länge> 3). ToList();

foreach (DirectoryInfo dir in dirs) 
    { 
    Console.WriteLine(dir.FullName); 
    } 

kann mir jemand sagen, wie es zu filtern, um von hier aus, und auch das, was in der Funktion get Verzeichnisse

+2

Können Sie den Code posten, den Sie bisher haben? – Blorgbeard

+0

Ich schlage vor, Sie selbst gehen und Ihren Code veröffentlichen, wenn Sie stecken bleiben. Das wird deine Frage 100% besser machen. Wir helfen Ihnen am besten, wenn Sie eine gute Qualitätsfrage stellen. – Enigmativity

Antwort

0

Heres ein Ausgangspunkt nehme nicht * meine ich:

var diProjects = new DirectoryInfo(@"C:\Projects"); 
var subFolders = diProjects.GetDirectories(); 
for (var i = 0; i < subFolders.Length; i++) 
{ 
    Console.WriteLine(string.Format("[{0}] {1}, directories = {2}, files = {3}" 
     , i 
     , subFolders[i].FullName 
     , subFolders[i].GetDirectories().Length 
     , subFolders[i].GetFiles().Length)); 
} 

Die folgende Zeile wird die Anzahl der Verzeichnisse innerhalb des angegebenen Ordners, können Sie überprüfen, ob es gleich 0 ist oder welchen Wert Sie überprüfen müssen

subFolders[i].GetDirectories().Length 

Sie können auch die folgende, um die Anzahl von Dateien in einem Unterverzeichnis zu erhalten

subFolders[i].GetFiles().Length 

Wenn beide subFolders[i].GetDirectories().Length und subFolders[i].GetFiles().Length sind 0, dann verwenden Sie das Unterverzeichnis ist leer annehmen kann. Sie sollten diesen Code als Vorlage verwenden können, um das zu tun, was Sie wollen.

+0

das ist, was ich bis jetzt bekommen habe: DirectoryInfo root = new DirectoryInfo (@ "\\ visrep01 \ REPORTS"); var dirs = new Liste (); dirs = root.GetDirectories ("*", SearchOption.AllDirectories) .Where (d => reg.IsMatch (d.Name)). Where ((d =>. D.FullName.Endswith ("TESTS"))) .Where (d => D.GetDirectories(). Length> = 0). Wo (d => d.GetFiles(). Länge> 3). ToList(); kann jemand mir von hier erzählen, wo ich gehen kann – PhillipsJP

+0

mein neues Problem ist, habe ich alle Verzeichnisse und Unterverzeichnisse im Format erhalten, das ich mit der oben genannten Suche will, aber wirklich nicht, weil es nichts zurückbringt, denke ich es wegen des unauthoriseccess crap beim Verwenden Holen Sie Verzeichnisse irgendwelche Lösungen, um dies zu umgehen. – PhillipsJP

+0

Nun, wenn Sie keinen Zugriff haben, dann kann ich nicht viel tun, Sie müssen mit Ihrem Netzwerkadministrator sprechen, aber Sie müssen auch begründen, warum Sie auch Zugang benötigen –