Para fazer isso sem o LINQ no .Net2.0:
List<Order> objListOrder = GetOrderList();
objListOrder.Sort(
delegate(Order p1, Order p2)
{
return p1.OrderDate.CompareTo(p2.OrderDate);
}
);
Se você está no .Net3.0, a resposta de LukeH é o que você procura .
Para classificar em várias propriedades, você ainda pode fazê-lo em um delegado. Por exemplo:
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;
}
);
Isso forneceria datas ascendentes com orderIds decrescente .
No entanto, eu não recomendaria a adesão de delegados, pois isso significa muitos lugares sem reutilização de código. Você deve implementar IComparer
e passar isso ao seu Sort
método. Veja aqui .
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;
}
}
E então, para usar essa classe IComparer, instancie-a e passe-a para o seu método Sort:
IComparer<Order> comparer = new MyOrderingClass();
orderList.Sort(comparer);