我有一个DataTable对象,我只想获取行的子集。 我试过通过DataView对象创建临时表(因为我需要对它进行排序)但是当我尝试清除第一个表时,临时表中的行也被删除了......
我的C#代码
DataView dv = new DataView();
dv = myTable.DefaultView;
string sortString = sortField;
if (sortOrder == SortOrder.ascending)
{
sortString += " ASC";
}
else
{
sortString += " DESC";
}
dv.Sort = sortString;
DataTable sortedTable = dv.ToTable();
myTable = sortedTable;
myTable.Rows.Clear();
for (int i = 0; i < PageSize; i++)
{
myTable.Rows.Add(sortedTable.Rows[((page - 1) * PageSize) + i]);
}
答案 0 :(得分:1)
您正在创建副本并将其存储在sortedTable中:
DataTable sortedTable = dv.ToTable();
行。但是你说:
myTable = sortedTable;
此时,myTable
和sortedTable
指的是同一个对象。然后你说,&#34;好的。获取我刚刚创建的副本并清除其中的所有行。
myTable.Rows.Clear();
只需删除:
myTable = sortedTable;
其他一切都应该没问题。
嗯,你还需要使用:
myTable.ImportRow
不是myTable.Rows.Add
,否则.NET会抱怨该行已经属于另一个表。