Как перевести lua в c# такой массив?

Зравствуйте, есть код на LUA:

NodesTable = {

    ["Node1"] = true,
    ["Node2"] = true,
    ["Node3"] = true,
    ["Node4"] = true
}
TNodesTable = {
    ["LNode1"] = true,
    ["LNode2"] = true,

}

Extracted = {}

if NodesTable[NodeName] then
    if TNodesTable[NodeName] then
        destPolo = "localGUID" // пример

        if not Extracted[sourceDATA] then
            Extracted[sourceDATA] = { [NodeName] ={}, [destDATA] = { [NodeName] = { name = sourceName, destPolo = destDATAkey, destName = destName, time_parsed = time_parsed, amount = {} }}}

        elseif not Extracted[sourceDATA][destDATA] then
            Extracted[sourceDATA][destDATA] = { [NodeName] = { name = sourceName, destPolo = destDATAkey, destName = destName, time_parsed = time_parsed, amount = {} }}
            Extracted[sourceDATA][NodeName] ={}

        elseif not Extracted[sourceDATA][destDATA][NodeName] then
            Extracted[sourceDATA][destDATA][NodeName] = { name = sourceName, destPolo = destDATAkey, destName = destName, time_parsed = time_parsed, amount = {} }

            Extracted[sourceDATA][NodeName] ={}
        end
    end
end

if Extracted[sourceDATA][NodeName].lastPing
and (Extracted[sourceDATA][NodeName].lastPing ~= curtime 
or TNodesTable[NodeName])
then
    Extracted[sourceDATA][NodeName].lastPing = curtime
    Extracted[sourceDATA][destDATA][NodeName].amount[#Extracted[sourceDATA][destDATA][NodeName].amount+1] = sended
    local total = 0
    local average = 0
    local hits = #Extracted[sourceDATA][destDATA][NodeName].amount
    for i = 1, hits do
        local amount = Extracted[sourceDATA][destDATA][NodeName].amount[i]
        total = total + amount
    end
    average = (total/hits)
    Extracted[sourceDATA][destDATA][NodeName].average = average
end

sourceDATA - ulong
destDATA - ulong
NodeName - string
name - string
destPolo - ulong
destName - string
time_parsed - double
lastPing - double
sended - double
average - double
amount - double,

amount это массив из цифр amount[i], из которых вычисляется среднее значение average

Мне нужно это "чудо" написать на c#, я могу создать модель для данных типа key - value

public class NodeStruct
{
    public string name { get; set; }
    public ulong destKey { get; set; }
    public string destName { get; set; }
    public double time_parsed { get; set; }
}

но что делать с amount я не знаю, т.е. я не понимаю как сделать такой словарь, где по мимо key - value должен быть еще в качестве поля Dictionary. Долго пытался понять как создать такой словарь Extracted, прошу Вашей помощи На ум приходит только пока что такое существо Франкенштейна:

public class NodeStruct
{
    public string name { get; set; }
    public ulong destKey { get; set; }
    public string destName { get; set; }
    public double time_parsed { get; set; }
    Array amount { get; set; }
 }

upd Не уверен что так будет правильно:

public class NodeStruct4
{
    public string name { get; set; }
    public ulong destKey { get; set; }
    public string destName { get; set; }
    public double time_parsed { get; set; }
    public int[] amount { get; set; }
}

public class NodeStruct3
{
    public Dictionary<uint, NodeStruct4> NodeName { get; set; }
}
 
public class NodeStruct2
{
    public double lastPing { get; set; }
}

public class NodeStruct1
{
    public Dictionary<ulong, NodeStruct3> destDATA { get; set; }
    public Dictionary<uint, NodeStruct2> NodeName { get; set; }
    
    //public ulong destDATA { get; set; }
    //public uint destDATA { get; set; }
}

public static Dictionary<ulong, NodeStruct1> Extracted = new();

Кажется что-то получилось:

LUA Extracted[12345][111].lastPing = 1
C#  Extracted[12345].NodeName[111].lastPing = 1;

LUA Extracted[12345][54321][111].amount[#Extracted[sourceDATA][destDATA][NodeName].amount+1] = 222222
C#  Extracted[12345].destDATA[54321].NodeName[111].amount.Append(222222);

добавление в 1 действие:

Extracted.Add(12345, new NodeStruct1
{
    NodeName = new Dictionary<uint, NodeStruct2> {{
        111, new NodeStruct2
        {
            lastPing = 1
        }
    }},
    destDATA = new Dictionary<ulong, NodeStruct3>
    {{

        54321, new NodeStruct3
        {
            NodeName  = new Dictionary<uint, NodeStruct4>
            {{
                111, new NodeStruct4
                {
                    amount = new int[] { 222222 }
                }
            }}
        }

    }}
});

Поправьте, если есть вариант лучше


Ответы (0 шт):