如何从DataTable对象获取行的子集

时间:2015-03-18 21:21:28

标签: c# datatable

我有一个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]);
}

1 个答案:

答案 0 :(得分:1)

您正在创建副本并将其存储在sortedTable中:

DataTable sortedTable = dv.ToTable();

行。但是你说:

myTable = sortedTable;

此时,myTablesortedTable指的是同一个对象。然后你说,&#34;好的。获取我刚刚创建的副本并清除其中的所有行。

myTable.Rows.Clear();

只需删除:

myTable = sortedTable;

其他一切都应该没问题。

嗯,你还需要使用:

myTable.ImportRow

不是myTable.Rows.Add,否则.NET会抱怨该行已经属于另一个表。