I have the following data structure and was wanting to turn it into a tree. I have this working with recursion but was wondering if there was a more efficient/better way?
public class Structure
{
public int Id {get;set;}
public int Level1 {get;set;}
public int Level2 {get;set;}
public int Level3 {get;set;}
public int Level4 {get;set;}
}
var data = new List<Structure> {
new Structure{Id=1,Level1=1,Level2=11,Level3=35,Level4=105},
new Structure{Id=2,Level1=1,Level2=11,Level3=35,Level4=106},
new Structure{Id=3,Level1=1,Level2=11,Level3=36,Level4=107},
new Structure{Id=4,Level1=1,Level2=11,Level3=36,Level4=108},
new Structure{Id=5,Level1=1,Level2=11,Level3=36,Level4=109},
new Structure{Id=6,Level1=1,Level2=11,Level3=36,Level4=110},
new Structure{Id=7,Level1=1,Level2=11,Level3=36,Level4=111},
new Structure{Id=8,Level1=2,Level2=12,Level3=37,Level4=112},
new Structure{Id=9,Level1=2,Level2=12,Level3=37,Level4=113},
new Structure{Id=10,Level1=2,Level2=12,Level3=37,Level4=114},
new Structure{Id=11,Level1=2,Level2=12,Level3=37,Level4=115},
new Structure{Id=12,Level1=2,Level2=12,Level3=37,Level4=116},
new Structure{Id=13,Level1=2,Level2=12,Level3=38,Level4=117},
new Structure{Id=14,Level1=2,Level2=12,Level3=39,Level4=118},
new Structure{Id=15,Level1=2,Level2=12,Level3=39,Level4=119},
new Structure{Id=16,Level1=2,Level2=12,Level3=40,Level4=120},
new Structure{Id=17,Level1=2,Level2=12,Level3=40,Level4=121},
new Structure{Id=18,Level1=2,Level2=12,Level3=40,Level4=122},
new Structure{Id=19,Level1=2,Level2=12,Level3=40,Level4=123},
new Structure{Id=20,Level1=2,Level2=12,Level3=40,Level4=124},
new Structure{Id=21,Level1=2,Level2=12,Level3=40,Level4=125},
new Structure{Id=22,Level1=2,Level2=12,Level3=41,Level4=126},
new Structure{Id=23,Level1=2,Level2=12,Level3=41,Level4=127},
new Structure{Id=24,Level1=3,Level2=13,Level3=42,Level4=128},
new Structure{Id=25,Level1=3,Level2=13,Level3=43,Level4=129},
new Structure{Id=26,Level1=3,Level2=13,Level3=44,Level4=130},
new Structure{Id=27,Level1=3,Level2=13,Level3=45,Level4=131},
new Structure{Id=28,Level1=3,Level2=13,Level3=45,Level4=132},
new Structure{Id=29,Level1=3,Level2=13,Level3=46,Level4=133},
new Structure{Id=30,Level1=3,Level2=13,Level3=47,Level4=134},
new Structure{Id=31,Level1=3,Level2=13,Level3=47,Level4=135},
new Structure{Id=32,Level1=3,Level2=13,Level3=47,Level4=136},
new Structure{Id=33,Level1=3,Level2=13,Level3=48,Level4=137},
new Structure{Id=34,Level1=3,Level2=14,Level3=49,Level4=138},
new Structure{Id=35,Level1=3,Level2=14,Level3=49,Level4=141},
new Structure{Id=36,Level1=3,Level2=14,Level3=49,Level4=142},
new Structure{Id=37,Level1=3,Level2=14,Level3=49,Level4=143},
new Structure{Id=38,Level1=3,Level2=14,Level3=49,Level4=144},
new Structure{Id=39,Level1=3,Level2=14,Level3=50,Level4=145}
}
So wanting the output to look something like:
1 - 11 - 35 - 105
- 106
- 36 - 107
- 108
- 109
- 110
- 111
.....
.....
.....
3 - 14 - 49 - 138
- 141
- 142
- 143
- 144
- 50 - 145