Crew .NET |
|
Er staat al zeker een fout in je code, er ontbreekt een '\' tussen path en key.Name. Maak gewoon gebruik van key.FullName en je hebt 'path' niet meer nodig. Waarom werk je niet met een Dictionary? Als Key gebruik je dan de naam van de Directory en als Value gebruik je een List van strings met de bestandsnamen. Voorbeeld:
public void GetDirectories(String path)
{
var dirInfo = new DirectoryInfo(path).GetDirectories();
var dirDict = new Dictionary<String, List<String>>();
foreach (var key in dirInfo)
{
dirDict.Add(key.Name, Directory.GetFiles(key.FullName + @"\", "*.jpg").ToList());
}
}
public void GetDirectories(String path) { var dirInfo = new DirectoryInfo (path ). GetDirectories(); var dirDict = new Dictionary <String, List <String>>(); foreach (var key in dirInfo) { dirDict.Add(key.Name, Directory.GetFiles(key.FullName + @"\", "*.jpg").ToList()); } }
Of korter gemaakt met LinQ:
public void GetDirectories(String path)
{
var dirInfo = new DirectoryInfo(path).GetDirectories();
var dirDict = dirInfo.ToDictionary(key => key.Name, key => Directory.GetFiles(key.FullName + @"\", "*.jpg").ToList());
}
public void GetDirectories(String path) { var dirInfo = new DirectoryInfo (path ). GetDirectories(); var dirDict = dirInfo.ToDictionary(key => key.Name, key => Directory.GetFiles(key.FullName + @"\", "*.jpg").ToList()); }
Let wel, deze code zal maar 1 level diep gaan kijken. Als je dus een map hebt met daarin een submap en daar staan jpg-bestanden in, die zullen niet toegevoegd worden. Als je dit wil, en dan ook ineens dynamisch, zal je een recursieve methode moeten schrijven die alle mappen doorzoekt. Maar dat maakt het al wat complexer. Voor 1 level diep zoeken is de code die ik gaf normaal voldoende! |