У меня проблема.
У меня есть 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 04:05
02/09/1992 03: 54
Выход всегда:
28/06 / 2010 04: 05
02/09/1992 03: 54
23/11/2011 12: 15
Я попытался использовать операторы> и <для сравнения и получил те же результаты.Я также пытался использовать разные команды для преобразования строк в объекты DateTime, например <code>Convert.ToDateTime, DateTime.Parse
.Попытка ввода без ЧЧ: мм (соответственно скорректировал код) и все еще имела тот же вывод.Я попытался не использовать IFormatProvider
(установите его в null) и снова никуда не попал.
Случайно я нашел эту тему:
Как отсортировать ArrayList объектов DateTime по убываниюпорядок?
Я извлек все даты из объектов и поместил их в этот список DateTime.Использовал List.Sort()
, и он выдал правильный вывод.Но потом я застрял в том, как использовать этот отсортированный список для сортировки моего EventHolder ArrayList.Некоторое время я стучал в эту стену и ничего не дал.
Я очень новичок в программировании, поэтому я едва знаю какой-либо хороший способ делать то, что я делаю.И это даже не работает.Кто-нибудь может объяснить мне, где я иду не так?