Ответ 1
поскольку OrderBy возвращает IOrderedEnumerable, вы должны сделать:
lst = lst.OrderBy(p => p.Substring(0)).ToList();
вы также можете сделать следующее:
lst.Sort();
Почему код ниже не сортирует мой список?
List<string> lst = new List<string>() { "bac", "abc", "cab" };
lst.OrderBy(p => p.Substring(0));
поскольку OrderBy возвращает IOrderedEnumerable, вы должны сделать:
lst = lst.OrderBy(p => p.Substring(0)).ToList();
вы также можете сделать следующее:
lst.Sort();
Вы смешиваете операции LINQ с методом, который изменяет переменную, к которой она применяется (т.е. метод экземпляра объекта).
Операции LINQ (то есть .OrderBy) возвращают запрос. Он не выполняет операцию над вашим объектом (т.е. lst
).
Вам нужно присвоить результат этого запроса вашей переменной:
lst = lst.OrderBy(p => p).ToList();
в LINQ lingo.
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);
}