C# 如何使用OLEDB按ID和parentID填充树视图

C# 如何使用OLEDB按ID和parentID填充树视图,c#,.net,visual-studio,treeview,oledb,C#,.net,Visual Studio,Treeview,Oledb,我有个大问题。我想用我得到的一些数据填充一个树视图 有一个根节点。我想向这个根节点添加一些由我的数据定义的其他节点。数据包括名称、ID和ParentID 数据存储在OLEDB中,但我也已经存储在我的程序中 我举个例子,因为我的英语不是最好的: 数据: Testdata 1 0 Testdata1 2 0 测试数据3 1 测试数据4 2 测试数据5 3 测试数据6 4 测试数据7 4 因此,我的树应该类似于: +根 ++测试数据1 ++++测试数据3 ++++++测试数据5 ++测试数据2 +++

我有个大问题。我想用我得到的一些数据填充一个树视图

有一个根节点。我想向这个根节点添加一些由我的数据定义的其他节点。数据包括名称、ID和ParentID

数据存储在OLEDB中,但我也已经存储在我的程序中

我举个例子,因为我的英语不是最好的:

数据:

Testdata 1 0

Testdata1 2 0

测试数据3 1

测试数据4 2

测试数据5 3

测试数据6 4

测试数据7 4

因此,我的树应该类似于:

+根

++测试数据1

++++测试数据3

++++++测试数据5

++测试数据2

++++测试数据4

++++++测试数据6

++++++测试数据7

你知道我怎样才能做到这一点吗

问候


Schlinger

您需要一个递归方法来遍历树

private void AddNode(List<Data> data, int parent)
{
    var parent = data.FirstOrDefault(x => x.ID == parent);
    var dataItems = data.Where(x => x.Parent == parent);
    foreach(var dataItem in dataItems)
    {
        AddNode(data, dataItem.ID);
    }
    Tree.Nodes.Add(parent.Name);
}
private void AddNode(列表数据,int父节点)
{
var parent=data.FirstOrDefault(x=>x.ID==parent);
var dataItems=data.Where(x=>x.Parent==Parent);
foreach(dataItems中的var dataItem)
{
AddNode(数据,dataItem.ID);
}
Tree.Nodes.Add(parent.Name);
}

我已经在我的程序中尝试过了,但它并没有像预期的那样工作。所有节点都在同一级别上,并且只有一个级别。private void AddNode(列表数据,字符串父,bool first){var parentData=data.FirstOrDefault(x=>x.IsIn==parent);var dataItems=data.Where(x=>x.IsIn==parent);foreach(数据项中的var dataItem){AddNode(data,dataItem.OID,false);}tvDatabase.Nodes.Add(parentData.Code);}这是您的问题:data.Where(x=>x.IsIn==parent);您需要在lambda上使用GroupEntry的其他属性。非常感谢您的帮助。有了您的解决方案,我终于可以找到一种方法:)