DataTable 覆盖上一行

DataTable overwrites previous row

所以我试图向 DataTable 添加一些行,但由于某种原因它似乎覆盖了前一行。我怎样才能避免这种情况。

目前我拥有的是这段代码:

DataTable table = new DataTable();

foreach (CallData data in p.ValueArray)
{
    DataRow row = table.NewRow();
    foreach (CallParm parm in data.Parm)
    {
        if (!table.Columns.Contains(parm.Name))
        {
            table.Columns.Add(parm.Name, typeof(string));
        }
        row[parm.Name] = parm.Value;
    }
    table.Rows.Add(row);
}

数据示例:

{
    ValueArray: [
        {
            Parm: [
                {
                    Name: "ID",
                    Value: 1
                },
                {
                    Name: "ID",
                    Value: 2
                },
                {
                    Name: "ID",
                    Value: 4
                }
            ]
        }
    ]
}

数据结果

"ID": 4

想要的结果

"ID": 1
"ID": 2
"ID": 4

我已经检查过它是否按预期运行循环,没问题。当我们添加行时,问题似乎发生了

您需要添加 Param 中的所有值,而不仅仅是最后一个。你可以这样试试

 DataTable table = new DataTable();

foreach (CallData data in p.ValueArray)
{
    DataRow row = table.NewRow();
    foreach (CallParm parm in data.Parm)
    {
        if (!table.Columns.Contains(parm.Name))
        {
            table.Columns.Add(parm.Name, typeof(string));
        }
        row[parm.Name] = parm.Value;
        //now you add all items in this loop not only last element.
        table.Rows.Add(row);
    }

}