我有一个类。有两个属性
一个是时间 一个是文本
我现在读取数据库中的3个表把每个表的 时间字段 和文本字段 分别放到类中,
把类添加到Aarraylist 里,
最后我想在Aarraylist里按时间排序把字符串个打印出来,该怎么做呢array= new ArrayList();
Storage_mainEntity stor = Storage_mainEntity.GetUserByName(this.TextBox1.Text);//入库时间
if(stor!=null)
{
#region 入库

con = new SqlConnection(Invoicing.DataAccess.DbConstants.ConnectionString);
con.Open();
string strrk = "select * from storage_main where Storage_serialno = '"+this.TextBox1.Text+"'  ORDER BY Storage_DateTime ";
SqlDataReader read = null;
SqlCommand cmd = new SqlCommand(strrk,con);
read = cmd.ExecuteReader();
while(read.Read())
{
Archives arch = new Archives();//类
str += "产品名称:" + read.GetValue(1).ToString();
str += "<br>";
str += "入库时间:" + read.GetValue(3).ToString();
str += "<br>";
arch.datetimes = read.GetValue(3).ToString();
str += "部门:" + read.GetValue(4).ToString();
str += "<br>";
arch.content = str;
array.Add(arch);

}
con.Close();

#endregion
#region 出库

string noticeserialno = "";

con = new SqlConnection(Invoicing.DataAccess.DbConstants.ConnectionString);
con.Open();
string strck = "select * from chuku where serialno = '"+this.TextBox1.Text+"'  ORDER BY DateTime ";
SqlDataReader read_ck = null;
SqlCommand cmd_ck = new SqlCommand(strck,con);
read_ck = cmd_ck.ExecuteReader();
while(read_ck.Read())
{
Archives arch1 = new Archives();
str += "出库时间:" + read_ck.GetValue(13).ToString();
str +="<br>";
arch1.datetimes = read_ck.GetValue(13).ToString();
noticeserialno = read_ck.GetValue(5).ToString();
NoticeEntity entity = NoticeEntity.GetBySer(read_ck.GetValue(13).ToString());
if(entity!=null)
{
str +="项目:" + entity.Subject;
str +="<br>";
}
arch1.content = str;

array.Add(arch1);
}
con.Close();

#endregion

解决方案 »

  1.   

    ArrayList.Sort
    http://msdn.microsoft.com/zh-cn/library/0e743hdt(VS.80).aspx
      

  2.   

    var sortArr = ArrayList.Sort(p=>p.datetimes);
      

  3.   

    arrylist添加项 进行装箱操作 可以用Ilist
      

  4.   

    我想应该是遍历这个ARRAYLIST,然后比较时间大小,然后根据时间,输出每个时间对应的文本属性,一条条打印出来
      

  5.   

    for(int i=0;i<array.Count;i++)
    {
    Archives arr=(Archives)array[i];

    string ii1 = arr.datetimes;
            string ii = arr.content;
    Response.Write(ii1.ToString());
    Response.Write(ii.ToString()); }我这样可以打出所有项,但怎么根据datetimes 排序,来输出 content呢
      

  6.   

    上面不是给方法拉吗?
    如果点不出来sort,
    就添加using System.Linq;的引用。
      

  7.   

    还有一个更好的办法,那就是联表查询,对查询结果进行排序,再生成list.
    比如:
    select * from
    (select datetime1 as datetime,text1 as context from tb1
    union 
    select datetime2 as datetime,text2 as context  from tb2
    union
    select datetime3 as datetime,text3 as context  from tb3) tt
    order by tt.datetime