Tengo un problema con la forma en que el método List Sort trata con la clasificación. Dado el siguiente elemento:¿Por qué la lista <T>. Método de ordenar reordenar elementos iguales de IComparable <T>?
class Element : IComparable<Element>
{
public int Priority { get; set; }
public string Description { get; set; }
public int CompareTo(Element other)
{
return Priority.CompareTo(other.Priority);
}
}
Si intento para solucionar el problema de esta manera:
List<Element> elements = new List<Element>()
{
new Element()
{
Priority = 1,
Description = "First"
},
new Element()
{
Priority = 1,
Description = "Second"
},
new Element()
{
Priority = 2,
Description = "Third"
}
};
elements.Sort();
A continuación, el primer elemento es el previamente segundo elemento "Segundo". O, en otras palabras, esta afirmación no:
Assert.AreEqual("First", elements[0].Description);
¿Por qué se .NET reordenamiento mi lista cuando los elementos son esencialmente los mismos? Me gustaría que solo reordene la lista si la comparación devuelve un valor distinto de cero.
Solicitud de función para un método de clasificación estable https://github.com/dotnet/corefx/issues/4696 –