日期:2014-05-18  浏览次数:20385 次

请教:ArrayList中如何进行日期排序?
数据库中有一表结构如下:
ID       Time
1         2007-08-08
2         2007-08-09
3         2007-08-18
4         2007-08-17
我查询出来的ArrayList日期值分别为:2007-8-8,2007-8-9,2007-8-18,2007-8-17
现拟按日期排序,请教如何实现?
请勿用SQL,因为出来的为字符类型

------解决方案--------------------
使用IComparer,看看MSDN的例子:

using System;
using System.Collections;

public class SamplesArrayList {

public class myReverserClass : IComparer {

// Calls CaseInsensitiveComparer.Compare with the parameters reversed.
int IComparer.Compare( Object x, Object y ) {
return( (new CaseInsensitiveComparer()).Compare( y, x ) );
}

}

public static void Main() {

// Creates and initializes a new ArrayList.
ArrayList myAL = new ArrayList();
myAL.Add( "The " );
myAL.Add( "quick " );
myAL.Add( "brown " );
myAL.Add( "fox " );
myAL.Add( "jumps " );
myAL.Add( "over " );
myAL.Add( "the " );
myAL.Add( "lazy " );
myAL.Add( "dog " );

// Displays the values of the ArrayList.
Console.WriteLine( "The ArrayList initially contains the following values: " );
PrintIndexAndValues( myAL );

// Sorts the values of the ArrayList using the default comparer.
myAL.Sort();
Console.WriteLine( "After sorting with the default comparer: " );
PrintIndexAndValues( myAL );

// Sorts the values of the ArrayList using the reverse case-insensitive comparer.
IComparer myComparer = new myReverserClass();
myAL.Sort( myComparer );
Console.WriteLine( "After sorting with the reverse case-insensitive comparer: " );
PrintIndexAndValues( myAL );

}

public static void PrintIndexAndValues( IEnumerable myList ) {
int i = 0;
foreach ( Object obj in myList )
Console.WriteLine( "\t[{0}]:\t{1} ", i++, obj );
Console.WriteLine();
}

}


/*
This code produces the following output.
The ArrayList initially contains the following values:
[0]: The
[1]: quick
[2]: brown
[3]: fox
[4]: jumps
[5]: over
[6]: the
[7]: lazy
[8]: dog

After sorting with the default comparer:
[0]: brown
[1]: dog
[2]: fox
[3]: jumps
[4]: lazy
[5]: over
[6]: quick
[7]: the
[8]: The

After sorting with the reverse case-insensitive comparer:
[0]: the
[1]: The
[2]: quick
[3]: over
[4]: lazy
[5]: jumps
[6]: fox
[7]: dog
[8]: brown
*/



------解决方案--------------------
ArrayList list = new ArrayList();
list.Add( "2007-8-8 ");
list.Add( "2007-8-9 ");
list.Add( "2007-8-18 ");
list.Add( "2007-8-17 ");