Zum Inhalt springen

Ordnerstrukturen zur Datenverarbeitung mit LINQ durchlaufen


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich muss für mein Programm über eine Eingabeoption durch einen Stringvergleich nach bestimmten Ordnern bzw. Daten suchen. Da ich dafür in den Unterordnern der Ordner und von den Unterordnern wieder in allen Unterordnern suchen muss, gestaltet sich der Zugriff recht unkomfortabel. Bis jetzt gehe ich vom obersten Ordner mittels DictionaryInfo[] nextDir = previous.GetDictionaries(); mit nachträglicher Foreachschleife immer weiter in die Hierarchie rein. Diese Variante funktioniert an und für sich gut, auch einen späteren Datenzugriff bekomme ich damit realisiert. Da ich diese Variante allerdings recht ungeschickt finde, würde ich gerne eine etwas effizientere Lösung anstreben. Soweit ich mal gelesen habe, ist es möglich mittels Linq sehr gut Ordnerstrukturen zu durchsuchen. Wie man zwei verschiedene Listen mittels Join o.ä. verbindet konnte ich bis jetzt überall finden, dies wäre aber nicht das was ich benötige. Ich muss einen Ordner öffnen, dann in diesem Ordner nachsehen ob die Eingabe mit den Ordnernamen übereinstimmen, wenn nicht dann in jeden weiteren Ordner dieses Ordners hinein und dort wieder den Vergleich anstellen. Wenn dann der Ordner gefunden wurde, dessen Name mit der Eingabe übereinstimmt. Dann muss ich in diesen Ordner, um dort 1. alle Dateien anzuzeigen und 2. einen Stringvergleich anstellen und alle Dateien bei denen Teile des Namens mit einer vorherigen Zeichenauswahl übereinstimmen zur Weiterverarbeitung in eine dafür vorgesehene Liste zu speichern.

Hat vielleicht jemand eine Idee wie man dies mittels Linq o.ä. sauber und effizient lösen könnte, ohne tausende von Foreachschleifen durchlaufen zu müssen?

Mit freundlichen Grüßen Gewinde

Geschrieben

Also ich habe jetzt mit einigem Hin und Her eine Lösung gefunden. Ob dies die Ideallösung unter Nutzung von Linq ist weiß ich nicht. Vielleicht hat jemand doch noch eine bessere Lösung oder aber kann diese Variante guten Gewissens abnicken. So ganz zufrieden bin ich damit noch nicht. Vielleicht bekomme ich es mit der Syntax noch besser hin. Wenn ich die Syntax richtig verstehe gehe ich gleich die ersten Ordnerstrukturen ohne großartige Suchvorgänge durch. Besser fände ich es, wenn er in jedem Ordner einmal nach den gewünschten Ordnernamen sucht. Dafür muss ich aber mit der Syntax noch etwas wärmer werden denke ich.

@tkreutz2 Danke für deine Antwort, dass Linq teilweise nicht die schnellste Möglichkeit ist war mir schon bekannt, ich glaube der Vorteil von Linq ist einmal die übersichtliche Syntax, Kompatibilität und das der eigentliche Vorgang erst mit auslösen der Foreachschleife gestartet wird? Irgendwie so habe ich das mal gelesen, bin mir jetzt aber nicht sicher ob die Aussage wirklich korrekt ist. Des weiteren sind natürlich die fülle von eingebauten Such- und Filterfunktionen ein enormer Vorteil. 

DirectoryInfo directory = new DirectoryInfo(Path);

var query = from dir in directory.GetDirectories()
            from dir2 in dir.GetDirectories()
            from dir3 in dir2.GetDirectories()
            where dir3.Name.Equals(orderNumber)
            from file in dir3.GetFiles()
            select file;

            foreach (var file in query)
            {
               collectedFiles.Add(file);
            }

Am Ende werden die Daten des Zielordners in einer Liste geparkt und über eine ObservableCollection aus dem ViewModel ans UI übergeben.

Für Tipps und Tricks bin immer dankbar ;)

Geschrieben

Hey,

danke für deine Antwort. Ich habe mir die Dokumentation von DirectoryInfo zwar durchgelesen, aber wie es aussieht ist der Teil an mir vorüber gegangen. Ich werde das dort geschriebene mal umsetzen, erstmal liest es sich so, als wäre es genau das was ich mir vorgestellt habe.

mal wieder an Dank an dieses Forum 👍

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...