我正在开发一种算法,它非常方便地使用数据表来实现它。
作为算法的一部分,我继续使用以下列的第一列对数据表进行排序:
dt.DefaultView.Sort = dt.Columns[0].ColumnName + " ASC";
dt = dt.DefaultView.ToTable(); // This is the Evil line
问题是,dt.DefaultView.ToTable();
似乎是一个相对繁重的操作内存和时间方面(占用算法时间的近60%!),很快这个算法就必须处理大量的数据
我知道我可以手动排序,但我不想重新发明轮子......
那么,是否有人知道如何在不重新分配完整表格的情况下完成工作,而无需重新发明轮子?
更完整的代码示例:
var dt = new DataTable();
/*Populating dt...*/
for (int i = 0; i < input.Length; i++)
{
/*Some more code here that includes modifying first column*/
dt.DefaultView.Sort = dt.Columns[0].ColumnName + " ASC";
dt = dt.DefaultView.ToTable();
}