DataTable合并和排序

时间:2011-05-06 21:07:21

标签: c#

我有两个具有相同列的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();
}

4 个答案:

答案 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 []转换为另一个表并将其返回。