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.
iot/labs/NestedSetModelTest/Program.cs

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;
}
}
}