Pour faire cela sans LINQ sur .Net2.0 :
List<Order> objListOrder = GetOrderList();
objListOrder.Sort(
delegate(Order p1, Order p2)
{
return p1.OrderDate.CompareTo(p2.OrderDate);
}
);
Si vous êtes sur .Net3.0, alors la solution de LukeH réponse est ce que vous recherchez.
Pour trier sur plusieurs propriétés, vous pouvez toujours le faire dans un délégué. Par exemple :
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;
}
);
Cela vous donnerait ascendant dates avec descendant orderIds.
Cependant, je ne recommanderais pas de s'en tenir aux délégués car cela signifierait beaucoup d'endroits sans réutilisation du code. Vous devriez implémenter un IComparer
et de le transmettre à votre Sort
méthode. Voir aquí .
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;
}
}
Et pour utiliser cette classe IComparer, il suffit de l'instancier et de la passer à votre méthode Sort :
IComparer<Order> comparer = new MyOrderingClass();
orderList.Sort(comparer);