有时,无论您如何将头撞到墙上,您都会遇到这样的日子,即使是最简单的任务也会暗示您(这是那些日子之一!)。
所以我有一个类别列表
CategoryID, CategoryName, ParentID, Lineage
1 Root Category, NULL, /1/
2 Child Category, 1, /1/2/
3 Grandchild, 2, /1/2/3
4 Second Root, NULL, /4/
5 Second Child 2, /1/2/5/
我创建了一个类来保存它,它包含上述所有值,加上
ICollection<Category> Children;
这应该创建树
Root Category
`-- Child category
| `-- Grandchild
`-- Second Child
Second Root
因此,我尝试在给定 Lineage 和元素的情况下向树中添加一个新类别,我将 lineage 转换为队列并将其放入此函数中。
public void AddToTree(ref Category parentCategory, Category newCategory, Queue<Guid>lineage)
{
Guid lastNode = lineage.Dequeue();
if(lastNode == newCategory.CategoryId)
{
parentCategory.Children.Add(newCategory);
return;
}
foreach (var category in parentCategory.Children)
{
if(category.CategoryId == lastNode)
{
this.AddToTree(ref category, newCategory, lineage);
}
}
}
现在我遇到了两个问题
自引用并不太令人担忧(它被设计为递归),但由于
foreach
循环中的类别是一个本地实例化的变量,我不能通过引用来制作它并将其用作指针。我相信一定有比这更简单的方法!
任何指针都会受到极大的欢迎。