![](/img/trans.png)
[英]C# - Copy rows from one DataTable by comparing with 2nd DataTable to 3rd DataTable
[英]Copy Rows from DataTable to list without linking data to the DataTable c#
我有一个dTable
多个列和行的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()
,则也清除了List中行中的信息,如何从DataTable中删除行'不会丢失列表中的数据?
希望我能正确解释以下内容。
请记住,当您从一个地方获取一个值并将其存储在另一个地方时,您并不是在创建新的实例,而是指向原始数据。 因此,当您将行添加到列表时,它指向您的数据表,然后将其清除,因此您的列表现在将不包含行信息。
这可行,但是可能还有另一种方法。 没有花很多时间研究它。
//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();
我认为主要问题是dTable.Clear()
也删除了列。 尝试改用dTable.Rows.Clear()
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.