我有一个具有以下结构的数据表:
id | parentid | name 1 | 0 | Parent 2 | 1 | Child 3 | 2 | child of child 4 | 1 | second child
我坚持输出这些作为父子(基本上我试图使用开放的xml输出这些作为toc)有人可以请帮助我将它们作为父子列表或字典中输出...
由于
答案 0 :(得分:1)
这是我对你的建议。创建一个数据对象(选择一个更好的名称,并在必要时添加更多属性),如下所示
public class DataNode
{
public int Id { get; private set; }
public string Name { get; set; }
public List<DataNode> Children { get; private set; }
public DataNode(int id, string name)
{
Id = id;
Name = name;
Children = new List<DataNode>();
}
}
创建像var dataNodeList = new List<DataNode>();
这样的节点的列表,并将没有父节点的所有元素直接添加到该列表中。将每个孩子添加到Children
的父级parentid
列表中。要在树中查找父级,请使用以下函数:
public DataNode FindElementById(IEnumerable<DataNode> elementsToSearch, int id)
{
foreach (var dataNode in elementsToSearch)
{
if (dataNode.Id == id)
{
return dataNode;
}
var found = FindElementById(dataNode.Children, id);
if (found != null)
{
return found;
}
}
return null;
}
答案 1 :(得分:0)
结帐this solution。您可以按如下方式使用它:
var hierarchy =
table.AsEnumerable().ToHierarchy(
r => r.Field<int>("parentid") == 0,
(parent, child) => parent.Field<int>("id") == child.Field<int>("parentid"));