Вы можете использовать OrderBy или Sort, но есть разница между двумя, которую вы должны понимать:
Если вы выполняете сортировку, она сортирует ваш список «на месте», поэтому в этом примере переменная «список» сортируется:
// you can manipulate whether you return 1 or -1 to do ascending/descending sorts
list.Sort((x, y) =>
{
if (x > y) return 1;
else if (x == y) return 0;
else return -1;
});
Если вы делаете OrderBy, первоначальный список не изменяется, но возвращается новый отсортированный перечисляемый список:
var sorted = list.OrderByDescending(x => x)
1009 ** * Редактировать 1010 ** * 1011
За этот ответ недавно проголосовали, поэтому я его просмотрел. В своем первоначальном ответе я упустил действительно важную деталь:
Если вы используете приведенный выше код LINQ (второй пример), сортировка будет происходить каждый раз, когда вы выполняете итерацию по переменной «sorted». Итак, если у вас есть более чем в 1 foreach, вы будете повторять сортировку. Чтобы избежать этого, измените код выше:
var sorted = list.OrderByDescending(x => x).ToList(); // or .ToArray()
Это заставит работать перечислитель и сохранит результат в отсортированном виде.
Если вы собираетесь перечислить его только один раз, вы можете пропустить вызов ToList / ToArray.