适用: 一般用在datatable排序的时候:先将datatable转换成dataview然后排序,再转换成datatable。
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; }