Lectura recursiva de la lista <Objeto>

Tengo esta estructura deList<Object>, para ser específico es un objeto "CategoryItem". Aquí está mi declaración del objeto "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;}
}

Aquí está mi estructura de datos de muestra:

[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

Mi problema es, ¿cómo paso en cada uno de los objetos 'CategoryItem' de mi declarado:

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

Para que pueda mostrarlo en una lista desordenada en html como este

BienvenidoNCCNCProducciónAdministrativoNPowerAyuda7CHLKprimero

¿Hay alguna forma de hacer esto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta