我有以下有父母子女关系的课程。一个类别可以有N个孩子,每个孩子可以有N个孩子,依此类推。
public class Category
{
public string Id { get; set; }
public string Name { get; set; }
public List<Category> Children { get; set; }
}
我使用下面的代码填充了treeview。
Category cat1 = new Category ;
cat1.Id = "1";
cat1.Name = "test1";
this.ecrCategories.Add(cat1);
Category cat2 = new Category ;
cat2.Id = "2";
cat2.Name = "test2";
this.ecrCategories.Add(cat2);
Category cat3 = new Category ;
cat3.Id = "3";
cat3.Name = "test3";
this.ecrCategories.Add(cat3);
Category child2 = new Category ;
child2.Id = "6";
child2.Name = "child2";
Category child1 = new Category ;
child1.Children = new List<Category>();
child1.Id = "4";
child1.Name = "child1";
child1.Children.Add(child2);
Category cat4 = new Category ;
cat4.Children = new List<Category>();
cat4.Id = "5";
cat4.Name = "test5";
cat4.Children.Add(child1);
this.ecrCategories.Add(cat4);
要求是找到所有选择任何类别的父母。让我们假设child3类别位于test-&gt; test1-&gt; child2-&gt; child3。当点击child3时,我应该能够识别test,test1,child2类别。需要查找所选的任何子类别的所有父类别。请帮助实现同样的目标。
答案 0 :(得分:0)
首先,在提供的示例中语法不正确。
要回答您的问题,您可以使用recursive
功能执行此操作。这是一个如何做的虚拟示例:
我在这里选择child2
{
//this is the main method.
//Assuming 'ecrCategories' is list of Categories
getparent(child2, ecrCategories);
Console.WriteLine(str.Trim(','));
}
static string str = "";
static void getparent(Category cat, List<Category> listtocheck )
{
foreach (var item in listtocheck)
{
if (item.Children == null) continue;
if (item.Children.Count>0 )
{
str += item.Name + ",";
getparent(item, item.Children);
}
}
}
输出:
test5,child1
上查看