我有两个具有相同列的DataTable。我想将其中一个DataTable追加到另一个的末尾,然后按日期对它们进行排序。解决这个问题的最佳方式是什么?
当我尝试合并和排序时,像这样:
private DataTable mergeAndSortTables(DataTable manualTable, DataTable gpsTable)
{
manualTable.Merge(gpsTable);
manualTable.DefaultView.Sort = "Date DESC";
return manualTable.DefaultView.ToTable();
}
我仍然最终导致行无序。我做错了什么?
编辑:我也使用此代码获得完全相同的结果:
private DataTable mergeAndSortTables(DataTable manualTable, DataTable gpsTable)
{
manualTable.Merge(gpsTable);
DataView view = manualTable.DefaultView;
view.Sort = "Date DESC";
return view.ToTable();
}
答案 0 :(得分:2)
不是修改默认视图,而是根据当前表创建一个新视图。这应该可以解决您的问题。
答案 1 :(得分:2)
您必须分配数据视图,然后对其进行处理。
DefaultView view = manualTable.DefaultView; view.Sort = "Date DESC"; return view.ToTable();
答案 2 :(得分:0)
我认为问题可能是Date是一个关键字 - 试试......
manualTable.DefaultView.Sort = "[Date] DESC";
答案 3 :(得分:0)
您可以使用DataTable.Select()
方法进行排序,但它会返回DataRow []。例如,在合并之后,您可以执行DataRow[] rows = manualTable.Select("", columnName sortOrder).
您始终可以将此DataRow []转换为另一个表并将其返回。