Dobrze
Directory.GetDirectories(root);
zwróci Ci tablicę podkatalogów.
Następnie można użyć LINQ, aby znaleźć taki jesteś zainteresowany:
IEnumerable<string> list = Directory.GetDirectories(root).Where(s => s.Equals("test"));
, który nie jest w pętli w kodzie, ale nadal jest pętla mimo wszystko. Ostateczna odpowiedź brzmi: "nie można znaleźć folderu" test "bez pętli".
Możesz dodać .SingleOrDefault()
do Linq, ale to zależy od tego, co chciałeś zrobić, jeśli nie można znaleźć twojego "testowego" folderu.
Jeśli zmienisz wywołanie GetDirectories
w celu włączenia funkcji wyszukiwaniaOdpowiedzi SearchOption.AllDirectories
, wykona ona również rekursję dla Ciebie. Oczywiście w tym przypadku wywołanie może zwrócić więcej niż jeden element, jeśli w drzewie katalogów znajduje się więcej niż jeden folder o nazwie "test".
+1 "To powinno zwrócić tylko jeden przedmiot." możesz to zrobić, dodając .SingleOrDefault() na końcu wyciągu :-) EDIT: a następnie oczywiście zwracając ciąg znaków. doh –
@David - rzeczywiście, choć możesz nie chcieć niczego zwracać, jeśli nie można znaleźć podkatalogu podrzędnego. Zaktualizuję moją odpowiedź. – ChrisF
@ChrisF, tak "..OrDefault "oznacza, że null zostanie zwrócony, jeśli nie zostanie znaleziony pasujący element, chyba że straciłem subtelność w tym, co mówisz :-( –