У меня была проблема с таблицей данных, содержащейся в другой таблице данных, которую я передавал в метод.
В основном я хотел удалить некоторые столбцы и записать исправленную таблицу в файл.
Затем у меня были другие действия, которые я хотел выполнить с исходным объектом DataTable.Однако я заметил, что при удалении столбцов были удалены все экземпляры этой таблицы, включая основную.
Мне удалось создать решение, в котором я создал новую таблицу и заполнил ее данными из оригинала.,
Но я просто искал понимание того, почему это происходит, не следует ли защищать исходные данные?
Кроме того, впервые публикуйте сообщения, извините, если что-то странно с моим сообщением
static void Main(string[] args)
{
//create tables
DataTable OriginalTbl = CreateTbl();
//pull the nested table out
DataTable NestedTbl = new DataTable();
NestedTbl = (DataTable)(OriginalTbl.Rows[0]["Nested"]);
//call the method
RemoveCols(OriginalTbl);
//try retrieving the data again
string Data;
string Excps;
//will throw error here
Data = NestedTbl.Rows[0]["Data"].ToString();
Excps = NestedTbl.Rows[0]["Exceptions"].ToString();
// something else
}
static DataTable CreateTbl()
{
DataTable OriginalTbl = new DataTable();
DataTable NestedTbl = new DataTable();
OriginalTbl.Columns.Add("Nested", typeof(DataTable));
NestedTbl.Columns.Add("Data");
NestedTbl.Columns.Add("Exceptions");
NestedTbl.Columns.Add("results");
DataRow NestedRow = NestedTbl.NewRow();
NestedRow["Data"] = "blah data";
NestedRow["Exceptions"] = "blah Exceptions";
NestedRow["results"] = "blah Results";
NestedTbl.Rows.Add(NestedRow);
// add to the original table
DataRow OrigRow = OriginalTbl.NewRow();
OrigRow["Nested"] = NestedTbl;
OriginalTbl.Rows.Add(OrigRow);
return OriginalTbl;
}
static void RemoveCols(DataTable MainTbl)
{
DataTable NestedTbl = (DataTable)(MainTbl.Rows[0]["Nested"]);
NestedTbl.Columns.Remove("Data");
NestedTbl.Columns.Remove("Exceptions");
//blah do something here
}