如何组织具有多个parentID级别的c#列表
我有一个c#列表,没有parentID的级别限制。 如何组织列表,以便输出如下所示: root1如何组织具有多个parentID级别的c#列表,c#,C#,我有一个c#列表,没有parentID的级别限制。 如何组织列表,以便输出如下所示: root1 ----sub1 --------sub3 ------------sub4 root2 ----sub2 我的名单: var categories = new List<categoryModel>(); categories.Add(new categoryModel { ID = 1, Name = "root 1", ParentID = 0 }); categories.Add
----sub1
--------sub3
------------sub4
root2
----sub2
我的名单:
var categories = new List<categoryModel>();
categories.Add(new categoryModel { ID = 1, Name = "root 1", ParentID = 0 });
categories.Add(new categoryModel { ID = 2, Name = "root 2", ParentID = 0 });
categories.Add(new categoryModel { ID = 3, Name = "sub 1", ParentID = 1 });
categories.Add(new categoryModel { ID = 4, Name = "sub 2", ParentID = 2 });
categories.Add(new categoryModel { ID = 5, Name = "sub 4", ParentID = 6 });
categories.Add(new categoryModel { ID = 6, Name = "sub 3", ParentID = 3 });
public class categoryModel
{
public int ID { get; set; }
public string Name { get; set; }
public int ParentID { get; set; }
}
var categories=新列表();
添加(新的categoryModel{ID=1,Name=“root 1”,ParentID=0});
添加(新的categoryModel{ID=2,Name=“root 2”,ParentID=0});
添加(新的categoryModel{ID=3,Name=“sub 1”,ParentID=1});
添加(新的categoryModel{ID=4,Name=“sub2”,ParentID=2});
添加(新的categoryModel{ID=5,Name=“sub 4”,ParentID=6});
添加(新的categoryModel{ID=6,Name=“sub 3”,ParentID=3});
公共类类别模型
{
公共int ID{get;set;}
公共字符串名称{get;set;}
public int ParentID{get;set;}
}
正如评论中所建议的,树形结构是您要寻找的
public class Node{
public string Value;
public List<Node> Descendants;
public Node(string value) { Value = value; }
public void Add(Node n) { Descendants.Add(n); }
}
var root = new Node("root");
var n1 = new Node("sub")
root.Add(n1);
公共类节点{
公共字符串值;
公开名单;
公共节点(字符串值){value=value;}
public void Add(节点n){子体.Add(n);}
}
var root=新节点(“根”);
var n1=新节点(“子节点”)
根。添加(n1);
您可以有一个通用树来声明
节点
它们是正确的,您应该采用树结构。要使您的结构适合于树结构,只需对您的模型进行一些修复
public class Category
{
public Category()
{
SubCategories = new HashSet<Category>();
}
public int ID { get; set; }
public string Name { get; set; }
public int? ParentID { get; set; }
[Foreignkey ("ParentId")]
public Category Parent {get; set;}
public ICollection<Category> SubCategories { get; set; }
}
公共类类别
{
公共类别()
{
子类别=新HashSet();
}
公共int ID{get;set;}
公共字符串名称{get;set;}
public int?ParentID{get;set;}
[Foreignkey(“ParentId”)]
公共类别父项{get;set;}
公共ICollection子类别{get;set;}
}
然后,您可以开始查询parentid为null的位置,然后导航到子类别。使用树结构,您可以在此处找到有关树结构的更多信息:像这样基于约定的数据结构很少是个好主意。除了列表之外,还有其他数据结构可以更好地完成您正在尝试的任务。在没有看到你正在做什么的情况下,我不能推荐一个,但正如帕维尔所提到的,它看起来像是某种类型的树的工作。