Видя из вашего обновления вот пример того, как я бы это сделал.Это не делает точно так же, как ваш код.Я поместил файловые узлы в качестве подузлов в каталог, потому что я чувствую, что это более интуитивно понятно, но изменить его обратно на то, что у вас, не должно быть сложно, если вы ищете именно такую функциональность
public TreeNode[] CreateChildNodes(){
return (from directory in Directory.GetDirectories(node.FullPath)
let directoryName = Path.GetDirectoryName(directory)
let pdfFiles = from file in Directory.GetFiles(directory,"*.pdf")
select new TreeNode(Path.GetFileName(file))
select new TreeNode(directoryName,pdfFiles.ToArray()).ToArray();
}
Несколько вещей, чтобы отметить;Поскольку вы используете только имена файлов и каталогов, я не думаю, что есть какая-либо идея в создании экземпляров объектов DirectoryInfo или FileInfo, поэтому я изменил это, чтобы просто использовать пути / строки.Я также предпочитаю, чтобы вспомогательные функции, такие как эта, не имели побочных эффектов, поэтому я возвращаю коллекцию узлов, а не присоединяю их к узлу, переданному в вашей версии (вы можете вызвать node.Nodes.AddRange, передавая результат, который является причинойпочему метод возвращает массив, а не IEnumerable)