2011-05-06 94 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();