Я пытаюсь добавить столбец в таблицу данных в наборе данных на С# (набор данных считывается из 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. Любые советы приветствуются.
dt.Columns.Contains("whatever")
, чтобы увидетьtrue
, потому что ваш код ломается наdt.Columns.Add(c1);
- person banging   schedule 12.04.2013