我有一个基本类别对象,其中也包含子类别。这是我的对象结构的简化版本:
分类
int Id
string CategoryName
string Path
Category ParentCategory
List<Category> SubCategories
Computer
--> Accessories
--> Keyboard
--> Mouse
--> Storage
--> Flash
--> Micro
如何编写为所有类别创建路径的函数?
路径,我的意思是:
键盘:电脑/配件/键盘
配件:电脑/配件
对于计算机:计算机
答案 0 :(得分:2)
这样的事情应该有效:
public String getPath(Category cat)
{
if (cat.ParentCategory == null) return cat.CategoryName;
return getPath(cat.ParentCategory) + "/" + cat.CategoryName;
}
答案 1 :(得分:1)
// If grand parent category has null parent you can do
public toBreadCrumbs() {
String out = this.CategoryName;
for(Category aux = this.ParentCategory;aux != null;) {
out = aux.CategoryName + ">" + out;
aux = aux.ParentCategory;
}
}
答案 2 :(得分:1)
Category cat=ParentCategory;
StringBuilder sb=new StringBuilder(CategoryName);
while (cat != null)
{
sb.Insert(0,cat.Name+"/");
cat=cat.ParentCategory;
}
String path=sb.ToString();
答案 3 :(得分:1)
这可能会完成这项工作,尽管堆栈并非绝对必要:
public string Path
{
get
{
var pathStack = new Stack<Category>();
var parentCategory = Parent;
while (parentCategory != null)
{
pathStack.Push(parentCategory);
parentCategory = parentCategory.ParentCategory ;
}
return String.Join("/", pathStack.Select(cat => cat.Name));
}
}