我正在尝试将一列添加到 C# 数据集中的数据表中(数据集是从 XML 文档中读取的)。似乎,如果我命名该列,我会在尝试添加它时收到 DuplicateNameException。如果我未命名该列,它将被添加到数据表中。列的名称实际上是什么似乎并不重要。只是是否定义了 Datatable.ColumnName 属性。
这是相关的代码块(xR 是一个先前定义的 XmlTextReader,这都是在一个 while xR.Read() 循环中):
xR.ReadToDescendant(this.calDataTag);
XmlReader xS = xR.ReadSubtree();
ds.ReadXml(xS);
foreach (DataTable dt in ds.Tables)
{
if (dt.Columns.Contains("offset"))
{
if (dt.TableName == "Single")
{
DataColumn c1 = new DataColumn();
c1.Caption = "TipType";
c1.ColumnName = "whatever";
dt.Columns.Add(c1);
}
foreach (DataRow dr in dt.Rows)
{
foreach (DataColumn dc in dt.Columns)
{
outString.Add("Table: " + dt.TableName.ToString() + " Column: " + dc.ColumnName.ToString() + " RowVal: " + dr[dc] + " " + dt.Columns.Contains("whatever"));
}
}
}
}
有趣的是,字符串的 dt.Columns.Contains("whatever") 部分总是返回 False。所以这不是一个真正的 DuplicateNameException。我确定我只是不正确地实现了 Columns.Add 方法。任何建议表示赞赏。