Как я могу отсортировать универсальный список DESC и ASC?

Как я могу отсортировать универсальный список 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();
    }
}
101
задан Fedor 8 August 2014 в 20:50
поделиться

3 ответа

С Linq

var ascendingOrder = li.OrderBy(i => i);
var descendingOrder = li.OrderByDescending(i => i);

Без Linq

li.Sort((a, b) => a.CompareTo(b)); // ascending sort
li.Sort((a, b) => -1* a.CompareTo(b)); // descending sort

Обратите внимание, что без Linq сортируется сам список. С Linq вы получаете упорядоченное перечисление списка, но сам список не изменяется. Если вы хотите изменить список, вы должны изменить методы Linq на что-то вроде

li = li.OrderBy(i => i).ToList();
215
ответ дан 24 November 2019 в 04:37
поделиться

Без Linq:

По возрастанию:

li.Sort();

По убыванию:

li.Sort();
li.Reverse();
65
ответ дан 24 November 2019 в 04:37
поделиться

без linq, используйте Sort () , а затем Reverse () it.

18
ответ дан 24 November 2019 в 04:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: