Hijo de padre jerárquico recursivo

Tengo una colección de artículos que vienen de una base de datos que tiene unaparentid valor o nulo

Aquí está mi diseño de clase:

public class Item
{
public int id{get;set;}
public string Name{get;set;}
public int? ParentId{get;set;}
public List<Item> SubItems{get;set;}
}

Quiero construir una estructura jerárquica de elementos de la colección. Supongamos que una colección es de 100 elementos a partir de los cuales necesito construir la estructura basada en el mapeo de ParentId.

Probé este postUniones jerárquicas recursivas en C # y LINQ pero me da un error si ParentId es nulo.

Tambien intentadoCree una lista de tipos de árboles verificando recursivamente la relación padre-hijo C # , pero esta solución tampoco me funciona.

¿Cómo logro esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta