可以在DataTable中快速排序数据吗?
我有一个带有一些行(30k~500k)的dataTable。我必须在dataTable(而不是dataView等)中排序。我有sory参数的查询,所以我使用
var view = dataTable.DefaultView;
view.Sort = sortParameters;
var dataTable = view.ToTable();
这部分没问题,而且速度非常快,但只有一个警告。如果我使用view.ToTable(),则新表没有设置的primaryKey。我必须再次设置,这个操作需要花费很多时间:/
我无法改变这一点。我必须加入两个dataTables(具有相同的表定义,但来自其他来源)并返回一个带有setted primaryKeys - 我之前怎么说都不能跳过它。
有没有办法加速这个?
答案 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
子句以仅排序。分别用您自己的值替换someFieldType
和sortFieldName
。
在drs上你可以做.ToArray(),或者将它导入DataTable等。