[.NET]調整資料表欄位順序

如何改變DataTable裡欄位的順序
在這裡講到改變欄位順序並不是用在要放入GridView裡
而是我們自己寫了一個DLL,可以直接將DataTable匯出成Excel用的

今天早上同事問了我一個問題,如何改變DataTable裡欄位的順序 
在這裡講到改變欄位順序並不是用在要放入GridView裡 
而是我們自己寫了一個DLL,可以直接將DataTable匯出成Excel用的 

如果不將DataTable的欄位順序作改變,匯出到Excel的欄位排序就會依照DataTable的順序來排
所以改變欄位的順序是有這個必要的 

首先 
在DataTable裡,改變欄位順序的方式可以用下列的方法來處理 
objDt.Columns["欄位名稱"].SetOrdinal(1); 
這個語法可以將指定的欄位放到指定的順序上 

所以我大概改了一下程式,作出一個可以讓大家共用的function 
請參考下列程式碼: 


public static void ReOrderTableColumn(DataTable objDt, string[] strNewColumnsOrder) 
{ 
    objDt.PrimaryKey = null; 

    for (int i = 0; i < strNewColumnsOrder.Length; i++) 
        objDt.Columns[strNewColumnsOrder[i]].SetOrdinal(i); 

    int intCount = objDt.Columns.Count; 
    for (int i = strNewColumnsOrder.Length; i < intCount; i++) 
        objDt.Columns.RemoveAt(strNewColumnsOrder.Length); 
}

這樣一來,當我希望要進行資料表欄位的排序,只要照下列的方式去作就可以了


DataTable objDt = ...取得資料表;
string[] strColumns = {"欄位1", "欄位2", "欄位3"};
ReOrderTableColumn(objDt, strColumns);

這樣欄位就會依照"欄位1", "欄位2", "欄位3"的順序作排序了