如何按列排序包含一行sql数据表的数组列表?

问题描述:

我,这是我的代码在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

,如果你想尝试一个数据表,你可以做

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

最简单的方法是给结果排序在数据库中设置。

您可以通过在查询的最底部添加ORDER BY语句来完成此操作,如果要按降序排序(升序为默认值),则需要在该语句的末尾添加DESC。

+0

tanx为你的时间,注意和帮助 – arnvd 2012-02-21 07:15:52

最好用数据库查询进行排序。 如果你不想或无法使用本:

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