2011-05-06 98 views
2

我有两个DataTable具有相同的列。我想将其中一个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(); 
} 

回答

2

不是修改默认视图,创建基于当前表中的排序,一个新的视角。这应该可以解决您的问题。

+0

我同意。看到我的答案。 – 2011-05-06 21:39:26

+0

排序工作正常,我做这件事的方式。不过,我尝试了你的方式,同样的结果。我认为真正的问题在于我合并DataTable的方式。 – Gagege 2011-05-06 21:49:33

0

我认为这个问题可能是日期是一个关键词 - 尝试...


    manualTable.DefaultView.Sort = "[Date] DESC"; 
0

可以使用DataTable.Select()方法排序,尽管它会回报你的的DataRow []。例如,合并后,您可以执行DataRow[] rows = manualTable.Select("", columnName sortOrder).您可以将此DataRow []始终转换为另一个表并将其返回。

2

你必须分配数据视图,然后处理它。

 
DefaultView view = manualTable.DefaultView; 
view.Sort = "Date DESC"; 
return view.ToTable();