【发布时间】:2017-04-07 03:34:02
【问题描述】:
所以我试图向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.Name 它被覆盖(row[parm.Name] = parm.Value;)。你想实现什么?你想从 ValueArray 中添加所有项目?
-
所以最后你的 DataTable 中只有一行,但 ValueArray 中有多个项目?
-
@mybirthname:没错
-
@MichaelTotKorsgaard 您的输入对象不适合您的成就,您需要有 3 个“Parm”和 1 个“Name,Value”对才能有 3 行。
-
发生这种情况是因为您具有相同的参数名称,因此您正在覆盖该值。我给你写了如何为你的情况做这件事