我的数据如下表所示(为了简单起见,我排除了任何与排序顺序无关的值)。
ID POSITION PARENT HASCHILDREN
------------------------------------------
1 1 0 False
2 3 0 True
3 2 0 False
4 1 2 False
5 2 2 False
我想要做的是按位置递归对数据进行递归排序。我拥有的对象就像这样
public class ExampleObject
{
public int ID { get; set; }
public int Position { get; set; }
public int Parent { get; set; }
public bool HasChildren { get; set; }
public List<ExampleObject> Children { get; set; }
}
上面的对象是递归的,因为它总是有自己的子节点,即使在这个例子中它只有2层深。我不知道如何在SO上构建结果,但这里是我希望结果的JSON
[
{
ID: 1,
Position: 1,
Parent: 0,
HasChildren: false,
Children: []
},
{
ID: 3,
Position: 2,
Parent: 0,
HasChildren: false,
Children: []
},
{
ID: 2,
Position: 3,
Parent: 0,
HasChildren: true,
Children: [
{
ID: 4,
Position: 1,
Parent: 2,
HasChildren: false,
Children: []
},
{
ID: 5,
Position: 2,
Parent: 2,
HasChildren: false,
Children: []
}
]
}
]
我真的不知道从哪里开始,我知道的是列表不会很大(10-20)项目,包括儿童和 应该大部分排序,如果这有帮助。