¿Cómo puedo ordenar la lista genérica DESC y ASC? ¿Con LINQ y sin LINQ? Estoy usando VS2008.
class Program
{
static void Main(string[] args)
{
List<int> li = new List<int>();
li.Add(456);
li.Add(123);
li.Add(12345667);
li.Add(0);
li.Add(1);
li.Sort();
foreach (int item in li)
{
Console.WriteLine(item.ToString() + "\n");
}
Console.ReadKey();
}
}
li.Sort((a, b) => b.CompareTo(a));
que el-1*
enfoque usado aquí. Edité la respuesta en consecuencia, pero @Servy la revirtió.-a.CompareTo(b)
.Sin Linq:
Ascendente:
Descendente:
fuente
Sort()
es un método nulo, por lo que no puede encadenarloReverse()
de esta manera. Necesitará 2 operaciones independientes. Sin embargo, con LINQ podría encadenarlo a un,OrderBy
pero en ese momento debería usarloOrderByDescending
en su lugar.sin linq, utilícelo
Sort()
y luegoReverse()
.fuente
Estaba revisando todas las respuestas anteriores y quería agregar una información adicional más. Quería ordenar la lista en orden DESC y estaba buscando la solución que sea más rápida para entradas más grandes y estaba usando este método antes: -
pero mis casos de prueba fallaban por exceder los límites de tiempo, por lo que la siguiente solución funcionó para mí: -
Entonces, en última instancia, la conclusión es que la segunda forma de ordenar la lista en orden descendente es un poco más rápida que la anterior.
fuente
Una forma muy sencilla de ordenar la lista con valores int en orden descendente:
¡Espero que esto ayude!
fuente
int.CompareTo(int)
hace que la puerta sea una razón. Consulte la fuente en referenceource.microsoft.com que dice: " Necesito usar comparar porque la resta se ajustará a positivo para números neg muy grandes, etc. ". Si tieneb = int.MinValue
ya = 1
(dice), esto fallará. A veces vale la pena llamar a un método.