我有DataTable
dTable
,其中包含多个列和行。
我正在编写一个函数来重排行,因此我想将行(带数据)复制到List
。我使用以下代码执行:
List<DataRow> rows = new List<DataRow>(dTable.Rows.Count);
int count = 0;
foreach (DataRow rowname in dTable.Rows)
{
rows.Add(dTable.NewRow());
rows[count].BeginEdit();
rows[count] = (rowname);
}
现在我要清除DataTable
dTable
并随机将行添加回DataTable
,但是如果我添加dTable.Clear()
,则行中的信息会被添加到{{1}} List也被清除,如何在不丢失List中的数据的情况下从`DataTable'中删除行?
答案 0 :(得分:0)
希望我能正确解释以下内容。
请记住,当您从一个地方获取值并将其存储在另一个地方时,您不会创建它的新实例,而是指向原始数据。因此,当您将行添加到列表中时,它会指向您的数据表,然后您将其清除,以便您的列表现在不包含行信息。
这有效,但可能有另一种方式。没有花很多时间研究它。
//temp table with row struct as not to point back to the original
//datatable that we will clear so we will just clone it.
DataTable tempDT = dt.Clone();
List<DataRow> rows = new List<DataRow>();
foreach (DataRow row in dt.Rows)
{
DataRow copy = tempDT.NewRow();
copy.ItemArray = (object[])row.ItemArray.Clone();
rows.Add(copy);
}
dt.Clear();
答案 1 :(得分:0)
我认为主要问题是dTable.Clear()
也删除了列。请尝试使用dTable.Rows.Clear()
。