【发布时间】:2015-02-22 09:07:55
【问题描述】:
我有一个数据表DTgraph,该数据表有一个名为Campaign 的列。该列可能具有三个唯一值之一,它们是 IVR, City, City2`。所以行是这样的:
我有一个数据表有这种格式的数据
........ IVR........
.........IVR........
**.........IVR........**
.........City1......
.........City1......
**.........City1......**
.........City2......
.........City2......
**.........City2......**
我想获取该列每个唯一值的最后一行,换句话说,我想获取粗体的行。我几乎做了所有这样的事情:
var cRows = new Dictionary<string, DataRow>(StringComparer.InvariantCultureIgnoreCase);
foreach (DataRow oRow in DTgraph.Rows)
{
var sKey = oRow["Campaign"].ToString();
if (!cRows.ContainsKey(sKey))
{
cRows.Add(sKey, oRow);
}
else
{
cRows[sKey] = oRow;
}
}
var oNewTable = DTgraph.Clone();
foreach (var oRow in cRows.Values)
{
oNewTable.Rows.Add(oRow);
}
如您所见,我将数据放入字典中,最后将字典转移到数据表中。
我的问题是在这一行:
cRows.Add(sKey, oRow);
我收到一个错误:
该行已经属于另一个数据表
注意:我需要解决这个异常,我不需要一种新的方式来实现我的目标
注意:我错了,例外在这一行
oNewTable.Rows.Add(oRow);
【问题讨论】:
-
您正在努力确保键是唯一的,但随后将值放入表中,它抱怨您放入表中的值不是唯一的。