問題があります。オブジェクト内のDateTime変数によるArrayListのオブジェクトの並べ替え
私はArrayList
のオブジェクトを持っています。各オブジェクトには、DateTime
データフィールドが含まれています。
これは、ArrayList
によってこれをソートする必要があります。DateTime
データフィールド。
これは私の現在のコードであり、それは動作しません:
for (int i = 0;i<EventHolder.Count;i++)
{
Event obj = (Event) EventHolder[i];
try
{
obj2=(Event)EventHolder[i+1];
}
catch
{
break;
}
DateTime date1 = DateTime.ParseExact(obj.Date_And_Time,"dd/MM/yyyy HH:mm",region);
DateTime date2 = DateTime.ParseExact(obj2.Date_And_Time, "dd/MM/yyyy HH:mm", region);
if (DateTime.Compare(date1,date2)>0)
{
Event tempobj=obj2;
EventHolder[i+1]=obj;
EventHolder[i]=tempobj;
}
}
foreach (Event i in EventHolder)
{
Console.WriteLine(i.Date_And_Time);
}
Console.ReadLine();
私はそれが動作するかどうかをテストするには、これら3つの日付を使用:
23/11/2011 12時15
28/06/2010 4時05分
1992年2月9日午前3時54分
出力は常にある:
28/06/2010午前4時05
1992年2月9日午前3時54
23/11/2011 12時15
比較のために>と<という演算子を使用してみましたが、同じ結果が得られました。また、別のコマンドを使用して、文字列をConvert.ToDateTime
、DateTime.Parse
などのDateTimeオブジェクトに変換しようとしました。 HH:mm(それに応じてコードを調整)なしで入力しようとしても、同じ出力が得られました。私はIFormatProvider
(nullに設定)を使用せずにもう一度やりませんでした。私は、オブジェクトのすべての日付を抽出し、このDateTimeのリストに入れて
How to sort ArrayList of DateTime objects in descending order?
:偶然
は、私がこのスレッドを発見しました。 List.Sort()
を使用し、正しい出力が得られました。しかし、このソートされたリストを使用してEventHolderのArrayListをソートする方法については悩んでいます。私はこの壁をしばらく叩いていて、何の結果ももたらさなかった。
私はプログラミングにとても慣れていないので、私がやっていることをする良い方法はほとんど分かりません。そしてそれはうまくいかない。 誰かが私に間違っていると私に説明することができますか?
古い醜いArrayListに固執する必要はありますか?ジェネリックコレクションとLINQを使用した場合、この作業は1行のコードで実行できます。 –
代わりにリストを使用できますが、arraylistである必要はありません。 –
eltaro
このようなものにはLINQを使わないことをお勧めします。コードは1行しか得られませんが、 'ArrayList.Sort()'や 'List .Sort()'を使うよりもかなり遅くなります。 –
xxbbcc