快速排序数据表

本文关键字:数据表 快速排序 | 更新日期: 2023-09-27 18:28:22

是否可以在DataTable中对数据进行快速排序?

我有一个数据表,里面有一些行(30k~500k)。我必须在dataTable(而不是dataView等)中排序。我有关于sory参数的查询,所以我使用

var view = dataTable.DefaultView;
view.Sort = sortParameters;
var dataTable = view.ToTable();

这个部分还可以,而且做得很快,但这只是一个警告。如果我使用视图。ToTable(),新表没有设置primaryKey。我必须再次设置,并且此操作花费了大量时间:/

我无法改变这一点。我必须连接两个dataTables(具有相同的表定义,但来自其他源),并返回一个带有setted primaryKeys的dataTables——我之前说的是,我不能跳过这一点。

有办法加快速度吗?

快速排序数据表

如果可以,请使用LINQ。这是我找到的最快的方法。您需要在.net 3.5中引用DataSetExtensions。但是,您最终会得到一个IEnumerable,而不是一个表。

var drs = from x in dataTable.Rows
          where x.Field<someFieldType>("FieldName") == etc
          orderby x.Field<someFieldType1>('SortFieldName')
          select x;

删除where子句以仅进行排序。将someFieldTypesortFieldName分别替换为您自己的值。

在drs上,您可以执行.ToArray(),或将其导入到DataTable等。