是否可以在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
子句以仅进行排序。将someFieldType
和sortFieldName
分别替换为您自己的值。
在drs上,您可以执行.ToArray(),或将其导入到DataTable等。