[英]Walking Parent/Child relation tree upwards
我有一个表示为父/子关系树的文件夹结构。 现在,让我们想象以下树:
-文件夹1
---子文件夹1-1
----子文件夹1-1-1
-子文件夹2
----子文件夹2-1
-文件夹2
现在,我显然可以使用导航属性,因此在Subfolder1-1
内时,我获得了一个表示Folder1
的属性ParentFolder
。
现在,我如何才能沿着树走动以从文件夹名称中生成串联字符串?
例如,当从Subfolder1-1-1
调用此方法时,我希望字符串为Folder1.Subfolder1-1.Subfolder1-1-1
而从Subfolder2-1
调用时,则希望字符串为Folder1.Subfolder2.Subfolder2-1
。
我已经考虑过递归,但是以下方法不起作用:
public string GetCompleteFolderName(string delimiter)
{
string folderName = null;
if (FolderParent != null)
{
folderName += GetCompleteFolderName(FolderParent) + delimiter;
}
return folderName;
}
private string GetCompleteFolderName(Folder folder)
{
string folderName = null;
if (folder != null)
{
folderName = folder.Name;
}
return folderName;
}
认为这应该可以解决问题
public class Folder
{
public Folder ParentFolder { get; set; }
public string Name { get; set; }
public Folder()
{
}
public string GetFullFolderName(string delimiter = ".")
{
var folderName = string.Empty;
if (ParentFolder != null)
{
folderName += ParentFolder.GetFullFolderName(delimiter) + delimiter + Name;
}
else
{
folderName += Name;
}
return folderName;
}
}
internal class Program
{
private static void Main(string[] args)
{
var f1 = new Folder {Name = "f1"};
var f2 = new Folder {Name = "f2", ParentFolder = f1};
var f3 = new Folder {Name = "f3", ParentFolder = f2};
Console.WriteLine(f3.GetFullFolderName());
}
}
输出:f1.f2.f3
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.