Rekurencyjne czytanie listy <Object>

Mam taką strukturęList<Object>, mówiąc konkretnie, jest to obiekt „CategoryItem”. Oto moja deklaracja obiektu „CategoryItem”.

public class CategoryItem
{
    public string Name { get; set; }
    public int CategoryID {get; set;}
    public int ParentID {get; set; }
    public List<CategoryItem> SubCategory {get; set;}
}

Oto moja przykładowa struktura danych:

[0] CategoryID: 249
Name: "WelcomeNC"
ParentID: 0
SubCategory: length=4
    [0] CategoryID: 250
        Name: "CNC"
        ParentID: 249
        SubCategory: length=0
    [1] CategoryID: 251
        Name: "Production"
        ParentID: 249
        SubCategory: length=0
    [2] CategoryID: 252
        Name: "Administrative"
        ParentID: 249
        SubCategory: length=1
            [0] CategoryID: 261
                Name: "NPower"
                ParentID: 252
                SubCategory: length=0
    [3] CategoryID: 253
        Name: "Help"
        ParentID: 249
        SubCategory: length=1
            [0] CategoryID: 254
                Name: "7"
                ParentID: 253
                SubCategory: length=1
                    [0] CategoryID: 255
                        Name: "CHLK"
                        ParentID: 254
                        SubCategory: length=0
[1] CategoryID: 111
Name: "First"
ParentID: 0
SubCategory: length=0

Mój problem polega na tym, jak wkroczyć do każdego zadeklarowanego obiektu „CategoryItem”:

List<CategoryItem> categoryItems = new List<CategoryItem>();

Aby móc wyświetlać go na nieuporządkowanej liście w html takim jak ten

WitamyNCCNCProdukcjaAdministracyjnyNPowerWsparcie7CHLKPierwszy

Czy istnieje sposób, aby to zrobić?

questionAnswers(5)

yourAnswerToTheQuestion