Pour ce faire 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 réponse de LukeH est ce que vous recherchez.
Pour trier sur plusieurs propriétés, vous pouvez toujours le faire au sein d'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 des dates ascendantes avec des ID de commande décroissants .
Cependant, je ne recommanderais pas de coller les délégués car cela signifiera beaucoup d'endroits sans réutilisation de code. Vous devez implémenter un IComparer
et simplement le transmettre à votre Sort
méthode. Voyez ici .
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 puis, pour utiliser cette classe IComparer, instanciez-la simplement et passez-la à votre méthode Sort:
IComparer<Order> comparer = new MyOrderingClass();
orderList.Sort(comparer);