2012-02-19 82 views
-1

我,這是我的代碼在C#中的一部分:如何按列排序包含一行sql數據表的數組列表?

SqlDataReader reader = command.ExecuteReader(); 
ArrayList readertmp = new ArrayList(); 
while (reader.Read()) 
    { 
     readertmp.Add(reader); 
    } 

閱讀器包含了幾個欄,如「名」,「年齡」和... 現在我想的一個排序「readertmp」列例如「名稱」。 anynody幫助我?

+0

你需要使用數組來保存數據還是可以使用數據表? – peroija 2012-02-19 13:27:46

+0

你可以向我們展示**你正在執行的SQL命令嗎? – 2012-02-19 13:30:17

+0

我很肯定你不能以這種方式使用DataReader。您將相同的對象添加到ArrayList。 – Steve 2012-02-19 13:31:48

回答

0

,如果你想嘗試一個數據表,你可以做

SqlDataReader reader = command.ExecuteReader(); 
DataTable dt = new DataTable(); 
dt.Load(reader); 

該填充表與您的數據。您可以使用數據視圖對數據進行排序。

DataView dataView = new DataView(dt); 
dataView.Sort = " Name DESC"; 

也,如其他人所說,你可以只是排序在SQL語句中

+0

tanx爲你的時間,關注和幫助 – arnvd 2012-02-21 07:15:28

0

最簡單的方法是給結果排序在數據庫中設置。

您可以通過在查詢的最底部添加ORDER BY語句來完成此操作,如果要按降序排序(升序爲默認值),則需要在該語句的末尾添加DESC。

+0

tanx爲你的時間,注意和幫助 – arnvd 2012-02-21 07:15:52

0

最好用數據庫查詢進行排序。 如果你不想或無法使用本:

ArrayList.Sort(new myComparer()) 

你必須創建自己的比較器類,這將使在選定字段比較,即「名」:

public class myComparer : IComparer 
{ 
    int IComparer.Compare(Object x, Object y) 
    { 
     string field1 = ((SqlDataReader)x)["name"]; 
     string field2 = ((SqlDataReader)y)["name"]; 
     return(String.Compare(field2, field1)); // reversed 
    } 
} 
+0

tanx爲您的時間,關注和幫助 – arnvd 2012-02-21 07:16:06