適用: 通常用在datatable排序的時候:先將datatable轉換成dataview而後排序,再轉換成datatable。spa
DataTable dtgradetemp = BLL.BaseSetting.PNGrade.GetPNGrade(longpn); DataView dv = new DataView(dtgradetemp); dv.Sort = "Priority desc"; DataTable dtgrade = GetDataTable(dv);
// <summary> /// 將DataView轉換爲DataTable /// </summary> /// <param name="obDataView"></param> /// <returns></returns> public DataTable GetDataTable(DataView obDataView) { if (null == obDataView) { throw new ArgumentNullException("DataView", "Invalid DataView object specified"); } DataTable obNewDt = obDataView.Table.Clone(); int idx = 0; string[] strColNames = new string[obNewDt.Columns.Count]; foreach (DataColumn col in obNewDt.Columns) { strColNames[idx++] = col.ColumnName; } IEnumerator viewEnumerator = obDataView.GetEnumerator(); while (viewEnumerator.MoveNext()) { DataRowView drv = (DataRowView)viewEnumerator.Current; DataRow dr = obNewDt.NewRow(); try { foreach (string strName in strColNames) { dr[strName] = drv[strName]; } } catch (Exception ex) { Console.WriteLine(ex.Message); } obNewDt.Rows.Add(dr); } return obNewDt; }