Если вы просто хотите придерживаться стандартных коллекций, то функция Sort(IComparer<>)
класса List<>
часто игнорируется. Все, что вам нужно сделать, это создать подходящий Comparer<>
для ваших объектов. Например:
public class PositionDateComparer : IComparer<VehiclePosition>
{
public int Compare(VehiclePosition x, VehiclePosition y)
{
if (x.DateTime == DateTime.MinValue)
{
if (y.DateTime == DateTime.MinValue)
{
// If x is null and y is null, they're
// equal.
return 0;
}
// If x is null and y is not null, y
// is greater.
return -1;
}
// If x is not null...
//
if (y.DateTime == DateTime.MinValue)
// ...and y is null, x is greater.
{
return 1;
}
// ...and y is not null, compare the dates
//
if (x.DateTime == y.DateTime)
{
// x and y are equal
return 0;
}
if (x.DateTime > y.DateTime)
{
// x is greater
return 1;
}
// y is greater
return -1;
}
}
Затем просто выполните vehiclePositionsList.Sort(new PositionDateComparer())
всякий раз, когда вы хотите отсортировать список, прежде чем получить к нему доступ. Я понимаю, что это может быть не так просто, как контейнер, который автоматически сортируется каждый раз, когда вы добавляете новый объект, но для многих (как я!) Этого может быть достаточно для успешного выполнения работы без дополнительных библиотек.