Для этого без LINQ на .Net2.0:
List<Order> objListOrder = GetOrderList();
objListOrder.Sort(
delegate(Order p1, Order p2)
{
return p1.OrderDate.CompareTo(p2.OrderDate);
}
);
Если вы используете .Net3.0, тогда ответ ЛукиХа - это то, что вам нужно.
Для сортировки по нескольким свойствам вы все равно можете делать это в делегате. Например:
orderList.Sort(
delegate(Order p1, Order p2)
{
int compareDate = p1.Date.CompareTo(p2.Date);
if (compareDate == 0)
{
return p2.OrderID.CompareTo(p1.OrderID);
}
return compareDate;
}
);
Это даст вам по возрастанию даты с по убыванию порядковые номера.
Однако я бы не рекомендовал прикреплять делегатов, так как это будет означать много мест без повторного использования кода. Вы должны реализовать IComparer
и просто передать это своему Sort
методу. См. здесь .
public class MyOrderingClass : IComparer<Order>
{
public int Compare(Order x, Order y)
{
int compareDate = x.Date.CompareTo(y.Date);
if (compareDate == 0)
{
return x.OrderID.CompareTo(y.OrderID);
}
return compareDate;
}
}
А затем, чтобы использовать этот класс IComparer, просто создайте его экземпляр и передайте его в метод Sort:
IComparer<Order> comparer = new MyOrderingClass();
orderList.Sort(comparer);