DataTable会覆盖上一行

时间:2016-11-23 08:15:45

标签: c# datatable overwrite

所以我试图将一些行添加到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

我已经检查过它应该在循环中运行,没问题。当我们添加行时问题似乎发生了

1 个答案:

答案 0 :(得分:1)

您需要添加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);
    }

}