Cómo construir una jerarquía de objetos para la serialización con json.net

Estoy tratando de escribir correctamente el código para construir una estructura de datos para serializar en json.

Estoy usando json.net.

No quiero crear un montón de clases para almacenar estos datos, ya que pensé que debería haber algunas clases que ya lo harán en json.net

Ya tengo todos los datos que necesito en una serie de bucles anidados, y ahora solo quiero agregarlos a una jerarquía de objetos antes de ejecutar JsonConvert.SerializeObject en él.

Ya probé un código como este, pero parece que no funciona

JArray container = new JArray();

        container.Add(new JObject(new JProperty("name", "Client1"), new JProperty("projects", new JArray())));

        container[0].AddAfterSelf(new JObject(new JProperty("projects", new JArray())));            
        container[1].AddAfterSelf(new JObject(new JProperty("projects", "Project2")));
        container[1].AddAfterSelf(new JObject(new JProperty("projects", "Project3")));
        container.Add(new JProperty("name", "Client2"));            

        var test = JsonConvert.SerializeObject(container);

El problema es que cuando uso [i]. o ElementAt (i) para acceder a algún lugar de la estructura, falta .Add () o .ElementAt no está allí. ¿Cómo paso a través de la estructura de datos para hacer que esta salida sea agradable a continuación, o tengo que crear mi propia clase de contenedor para todo esto?

Este es el formato de datos que estoy tratando de hacer.

[
    {
    "name": "student1",
    "projects": 
    [
        {
        "name": "Project1",
        "tasks": 
                [
                    {
                    "name": "task1",
                    "id": 2
                    }
                ],
        "id": 6
        }
    ]
},
    {
    "name": "Student2",
    "projects": [
                {
                "name": "Project1",
                "tasks": [
                         {
                         "name": "Task2",
                         "id": 1
                         },
                         {
                         "name": "Task3",
                         "id": 3
                         },
                         {
                         "name": "Task4",
                         "id": 4
                         }
                         ],
                "id": 2

etc ...

Respuestas a la pregunta(3)

Su respuesta a la pregunta