Leitura recursiva de List <Object>

Eu tenho essa estrutura deList<Object>, para ser específico, é um objeto "CategoryItem". Aqui está minha declaração do 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;}
}

Aqui está a minha estrutura de dados de amostra:

[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

Meu problema é, como passo em cada objeto 'CategoryItem' do meu declarado:

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

Para que eu possa exibi-lo em uma lista não ordenada em html como este

WelcomeNCCNCProduçãoAdministrativoNPowerSocorro7CHLKPrimeiro

Existe uma maneira de fazer isso?

questionAnswers(5)

yourAnswerToTheQuestion