Inizialize an Jarray wih n JObject that contain an progressive index I need to inizialize an JArray with a JObject that contain a property areaNum that is an incremental integer. 

Right now I wrote the below code, which works ok if I have a small number of JObjects, otherwise it takes too long. 

I'm looking for a way to write the below code that take in consideration the performance at time side 

i need to initialize an JArray with n JObject that contain the areaNum that is a incremental number

Function csvToWebSocketStringSuper3(lclrow As CsvRow) As String

Dim panelsArray As New JArray()
        Dim panel As New JObject

        For i As Integer = 1 To 5
            panel = New JObject(                    
                New JProperty("areaNum",            i),
                New JProperty("numbers",            New JArray({New JArray({}),New JArray({}),New JArray({})})),
                New JProperty("systems",            New JArray({""})),
                New JProperty("multiplier",         New JArray({""})),
                New JProperty("qp",                 false),
                New JProperty("series",             false),
                New JProperty("noseries",           false),
                New JProperty("twodigit",           false),
                New JProperty("onedigit",           false),
                New JProperty("void",               false))     
            panelsArray.Add(panel)
        Next i
    Dim obj As JObject  = New JObject(
            New JProperty("playslipID",             2331),
            New JProperty("ticketID",               2100) ,
            New JProperty("participationMethod",    0),             
            New JProperty("multidraws",             New JArray({formatStringToEmptyORIntegerReplace0(lclrow.getMultipleDraws)})),
            New JProperty("advancedraws",           New JArray({formatStringToEmptyORIntegerReplace0(lclrow.getDrawOffsets)})),
            New JProperty("proto",                  New JArray({formatStringToEmptyORIntegerReplace0(lclrow.getProductId)})),
            New JProperty("areas",                  panelsArray
            ))

        Return JsonConvert.SerializeObject(obj)
Instead of creating JObject after JObject you should create it once without the areaNum property. Then in a loop you should DeepClone() it and use AddFirst(), if positions matter, to add the areNum property like so  

    Dim original As JObject = New JObject(
    New JProperty("numbers", New JArray({New JArray({}), New JArray({}), New JArray({})})),
    New JProperty("systems", New JArray({""})),
    New JProperty("multiplier", New JArray({""})),
    New JProperty("qp", False),
    New JProperty("series", False),
    New JProperty("noseries", False),
    New JProperty("twodigit", False),
    New JProperty("onedigit", False),
    New JProperty("void", False))

    For i As Integer = 1 To 5
        Dim panel As JObject = original.DeepClone
        panel.AddFirst(New JProperty("areaNum", i))
        panelsArray.Add(panel)
    Next i