c#数据表递归输出
我有一个具有以下结构的数据表: id | parentid | name 1 | 0 | Parent 2 | 1 | Child 3 | 2 | child of child 4 | 1 | second child id | parentid | name 1 | 0 |家长 2 | 1 |个孩子 3 | 2 |儿童之子 4 | 1 |第二个孩子 我坚持把这些输出为父子(基本上我尝试使用开放式xml将它们输出为toc)有人能帮我将它们输出为列表或字典中的父子c#数据表递归输出,c#,recursion,parent,C#,Recursion,Parent,我有一个具有以下结构的数据表: id | parentid | name 1 | 0 | Parent 2 | 1 | Child 3 | 2 | child of child 4 | 1 | second child id | parentid | name 1 | 0 |家长 2 | 1 |个孩子 3 | 2 |儿童之子 4 | 1 |第二个孩子 我坚持把这些输出为父子(基本上我尝试使用开放式xml将它们输出为toc)有人能帮我
谢谢这是我给你的建议。创建一个数据对象(选择一个更好的名称,必要时添加更多属性),如下所示
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 hierarchy =
table.AsEnumerable().ToHierarchy(
r => r.Field<int>("parentid") == 0,
(parent, child) => parent.Field<int>("id") == child.Field<int>("parentid"));
var层次结构=
table.AsEnumerable().ToHierarchy(
r=>r.Field(“parentid”)==0,
(父,子)=>parent.Field(“id”)==child.Field(“parentid”);
创建了一个foreach循环,我在其中获取行并添加到列表中…然后为子行创建另一个列表…但我现在不知道如何链接它们您希望得到什么输出?请举个例子……我不认为在数据表上使用递归函数是明智的。只需将正确的信息放入datatable中,将递归函数保存到正确的作业中,就可以了。。。。如何执行此部分:使用parentid将每个子项添加到父项的子项列表。@user813741:使用方法FindElementById
(提供根列表和您正在搜索的parentid)获取父项。如果您返回了一个DataNode(!=null),那么您可以使用foundParent.Children.add(newDataNode(id,name)),将一个新的子节点添加到该父节点的Children属性中代码>
var hierarchy =
table.AsEnumerable().ToHierarchy(
r => r.Field<int>("parentid") == 0,
(parent, child) => parent.Field<int>("id") == child.Field<int>("parentid"));