Сортировка списка с помощью OrderBy

Почему код ниже не сортирует мой список?

List<string> lst = new List<string>() { "bac", "abc", "cab" };
lst.OrderBy(p => p.Substring(0));

Ответы

Ответ 1

поскольку OrderBy возвращает IOrderedEnumerable, вы должны сделать:

lst = lst.OrderBy(p => p.Substring(0)).ToList();

вы также можете сделать следующее:

lst.Sort();

Ответ 2

Вы смешиваете операции LINQ с методом, который изменяет переменную, к которой она применяется (т.е. метод экземпляра объекта).

Операции LINQ (то есть .OrderBy) возвращают запрос. Он не выполняет операцию над вашим объектом (т.е. lst).

Вам нужно присвоить результат этого запроса вашей переменной:

lst = lst.OrderBy(p => p).ToList();

в LINQ lingo.

Ответ 3

string[] words = { "bac", "abc", "cab" };

var sortedWords = from w in words
                  orderby w
                  select w;

Console.WriteLine("The sorted list of words:");

foreach (var w in sortedWords)
{
    Console.WriteLine(w);
}