Tengo una clase de persona con tres campos, Título, Nombre, Sexo y me gustaría crear una clasificación personalizada para que primero la ordene por Título, luego por Nombre y luego por Género ascendente:Ordenación personalizada (IComparer en tres campos)
public class SortPerson : IComparer
{
public int Compare(object x, object y)
{
(…)
}
}
sé cómo hacer esto de una sola variable con el que comparar: Pero ¿cómo iba a tener que proceder con tres?
public class SortPerson : IComparer
{
int IComparer.Compare(object a, object b)
{
Person p1=(Person)a;
Person p2=(Person)b;
if (p1.Title > p2.Title)
return 1;
if (p1.Title < p2.Title)
return -1;
else
return 0;
}
}
Muchas gracias,
¿Qué piensa usted que debería hacer? Un campo, naturalmente, debería ser más importante, ¿correcto? ¿Luego otro? Y finalmente el último? Entonces compara el primer campo. Si ese resultado es 0, entonces compare el segundo. Si ese resultado es 0, compare el tercero. Devuelve el resultado. Convierte eso en un método y tienes un comienzo. Luego refactorízala. –