You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
3.1 KiB
101 lines
3.1 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
|
|
namespace NestedSetModelTest
|
|
{
|
|
internal class Program
|
|
{
|
|
private static List<Node> list = new List<Node>();
|
|
|
|
private static void Main(string[] args)
|
|
{
|
|
var root = CreateTree();
|
|
Add(root);
|
|
var i = 1;
|
|
foreach (var item in list)
|
|
{
|
|
item.Left = i++;
|
|
}
|
|
list.Reverse();
|
|
foreach (var item in list)
|
|
{
|
|
item.Right = i++;
|
|
}
|
|
list.Reverse();
|
|
foreach (var item in list)
|
|
{
|
|
Console.WriteLine($"{item.Name}:{item.Number},{item.Left}-{item.Right}");
|
|
}
|
|
}
|
|
|
|
private static void Add(Node node)
|
|
{
|
|
list.Add(node);
|
|
if (node.Children.Any())
|
|
{
|
|
foreach (var item in node.Children.OrderBy(o => o.DisplayOrder))
|
|
{
|
|
Add(item);
|
|
}
|
|
}
|
|
}
|
|
|
|
private static Node CreateTree()
|
|
{
|
|
var root = new Node
|
|
{
|
|
Name = "root",
|
|
Number = "1-18",
|
|
Children = new List<Node> {
|
|
new Node{
|
|
Name="Fruit",
|
|
Number="2-11",
|
|
Children=new List<Node>{
|
|
new Node{
|
|
Name="Red",
|
|
Number="3-6",
|
|
Children=new List<Node>
|
|
{
|
|
new Node{
|
|
Name="Cherry",
|
|
Number="4-5"
|
|
}
|
|
}
|
|
},
|
|
new Node{
|
|
Name="Yellow",
|
|
Number="7-10",
|
|
DisplayOrder=1,
|
|
Children=new List<Node>
|
|
{
|
|
new Node{
|
|
Name="Banana",
|
|
Number="8-9"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
},
|
|
new Node{
|
|
Name="Meat",
|
|
Number="12-17",
|
|
DisplayOrder=1,
|
|
Children=new List<Node>{
|
|
new Node{
|
|
Name="Beef",
|
|
Number="13-14"
|
|
},
|
|
new Node{
|
|
Name="Port",
|
|
Number="15-16",
|
|
DisplayOrder=1,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
};
|
|
return root;
|
|
}
|
|
}
|
|
} |