快速排序dataTable

时间:2012-03-18 19:38:02

标签: c# .net

可以在DataTable中快速排序数据吗?

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

var view = dataTable.DefaultView;
view.Sort = sortParameters;

var dataTable = view.ToTable();

这部分没问题,而且速度非常快,但只有一个警告。如果我使用view.ToTable(),则新表没有设置的primaryKey。我必须再次设置,这个操作需要花费很多时间:/

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

有没有办法加速这个?

1 个答案:

答案 0 :(得分:2)

如果可以,请使用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等。