WishhhMaster
Messages postés327Date d'inscriptionmardi 17 février 2004StatutMembreDernière intervention10 avril 20108 26 juil. 2008 à 06:37
Salut,
Une solution est de te créer une classe qui implémente System.Collections.IComparer (ou sa version générique) et dans la méthode Compare tu fais tes comparaisons dans l'ordre que tu veux
Exemple:
public class MyClass {
MyStruct[] TabStruct;
//..rempli MyStruct
Array.Sort(TabStruct,new StructComparer());
}
//version générique
public class StructComparer : System.Collections.Generic.IComparer<MyStruct>
{
int System.Collections.Generic.IComparer<MyStruct>.Compare(MyStruct m1, MyStruct m2)
{
if (m1.a < m2.a)
return -1;
else if (m1.a > m2.a)
return 1;
else
{
if (m1.b < m2.b)
return -1;
else if (m1.b > m2.b)
return 1;
else
{
if (m1.c < m2.c)
return -1;
else if (m1.c > m2.c)
return 1;
return 0;
}
}
}
}
Sinon, si tu utilise .net 3.5, tu dois pouvoir le faire avec Linq plus simplement (pas sur de la syntaxe)
var list = from st in MyStruct
orderby st.a,st.b,st.c
select st;