Как мне отсортировать общий список по DESC и ASC? С LINQ и без LINQ? Я использую 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));
чем-1*
используемый здесь подход. Я отредактировал ответ соответствующим образом, но @Servy вернул его.-a.CompareTo(b)
.Без Linq:
По возрастанию:
По убыванию:
источник
Sort()
- это метод void, поэтому вы не можете привязатьReverse()
к нему таким образом. Вам понадобятся 2 отдельные операции. Однако с LINQ вы можете связать его с,OrderBy
но на этом этапе вы должны просто использоватьOrderByDescending
вместо него.без linq используйте
Sort()
а потомReverse()
его.источник
Я проверял весь ответ выше и хотел добавить еще одну дополнительную информацию. Я хотел отсортировать список в порядке DESC, и я искал решение, которое быстрее для больших входов, и я использовал этот метод раньше: -
но мои тестовые примеры терпели неудачу из-за превышения временных ограничений, поэтому для меня сработало следующее решение: -
Таким образом, в конечном итоге можно сделать вывод, что 2-й способ сортировки списка по убыванию немного быстрее, чем предыдущий.
источник
Очень простой способ отсортировать список со значениями int в порядке убывания:
Надеюсь, это поможет!
источник
int.CompareTo(int)
в этом. См. Источник на сайте linksource.microsoft.com, в котором говорится: « Необходимо использовать сравнение, потому что вычитание приведет к положительному результату для очень больших отрицательных чисел и т . Д. ». Если у вас естьb = int.MinValue
иa = 1
(скажем), это не удастся. Иногда стоит вызов метода.