在C#中實現爲DataTable排序的方法

我們都知道在Sql Server可以用order by來排序,所以很多朋友在DataTable中排序也想到了用order by關鍵字。但這樣實現是比較困難的,下面,我們講解一種比較簡單的方法:
利用DataView的Sort屬性爲DataTable排序

我們先看看Sort方法定義:
//摘要:
//獲取或設置 System.Data.DataView 的一個或多個排序列以及排序順序。
//返回結果:
//一個字符串,它包含列名,後跟“ASC”(升序)或“DESC”(降序)。在默認情況下列按升序排序。多個列可用逗號隔開。
[ResCategory("DataCategory_Data")]
[DefaultValue("")]
[ResDescription("DataViewSortDescr")]public string Sort { get; set; }

從Sort的定義中我們可以知道,Sort屬性的格式應該是類似於"字段 ASC"或者"字段 DESC",這點和Sql Server中的order by是非常相似的。

下面我們通過一個示例來理解:
protected void Page_Load(object sender, EventArgs e)
{
//先新建一個DataTable,併爲DataTable填充數據
DataTable dt = new DataTable();
dt.Columns.Add("ID", typeof(int));
dt.Rows.Add(3);
dt.Rows.Add(5);

Response.Write("輸出排序前的結果:<br / >");
foreach (DataRow dr in dt.Rows)
{
Response.Write(dr["ID"].ToString() + "<br / >");
}

Response.Write("<br / >");
Response.Write("輸出排序後的結果:<br / >");
Response.Write("<br / >");

//--------開始爲DataTable按ID列從大到小排序---------
DataView dv = dt.DefaultView;
dv.Sort = "ID desc";
dt = dv.ToTable();
foreach (DataRow dr in dt.Rows)
{
Response.Write(dr["ID"].ToString() + "<br / >");
}
}

輸出結果:

運行,打印結果如下:
輸出排序前的結果:
3
5

輸出排序後的結果:
5
3

可以從結果中看出來,DataTable已經按照ID列從大到小排序了。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章