Я пытаюсь добавить столбец в datatable внутри набора данных на C# (набор данных считывается из XML-документа). Кажется, что, если я назову столбец, я получаю исключение DuplicateNameException при попытке добавить его. Если я оставлю столбец неназванным, он будет добавлен в datatable. Кажется, не имеет значения, каково имя столбца на самом деле; просто определяется ли свойство Datatable.ColumnName.C# DataTable Добавить столбец DuplicateNameException
Вот соответствующий кодовый блок (хК является определено ранее XmlTextReader, и это все, в то время как 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 (» что бы ни была "), строка всегда возвращает False. Так что это не истинный DuplicateNameException. Я уверен, что я просто внедряю метод Columns.Add неправильно. Любые советы приветствуются.
Нижняя линия, вы не можете иметь 2 столбца с одинаковым именем. Вы никогда не достигнете 'dt.Columns.Contains (" whatever ")', чтобы видеть 'true', потому что ваш код разбивается на' dt.Columns.Add (c1); ' – banging
Я не получил его, но вы добавляете 'Whatever столбец в таблице, а затем в следующий раз, если оба условия в вашем первом foreach верны, вы снова добавляете «Что угодно» в таблице. – Kashif
@Kashif - Я, видимо, пытаюсь добавить один и тот же столбец в одну и ту же таблицу несколько раз. Довольно новобрачная ошибка. Благодаря! – JMarotta