Използвам C# на Framework 3.5. Искам бързо да сортирам общ списък (Generic List<T>
). За целите на този пример нека да кажем, че имам списък от тип Person
със свойство lastname. Как ще сортирам този списък, като използвам ламбда израз?
List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
Ако имате предвид сортиране на място (т.е. списъкът се актуализира):
people.Sort((x, y) => string.Compare(x.LastName, y.LastName));
Ако имате предвид нов списък:
var newList = people.OrderBy(x=>x.LastName).ToList(); // ToList optional
Трябва ли списъкът да бъде сортиран по място или само да се подреди последователността на съдържанието на списъка? Последното е по-лесно:
var peopleInOrder = people.OrderBy(person => person.LastName);
За да сортирате на място, ще ви трябва IComparer
или Comparison
. За тази цел може да разгледате ProjectionComparer
в MiscUtil.
(Знам, че продължавам да повдигам въпроса за MiscUtil - той просто продължава да е актуален...)
people.OrderBy(person => person.lastname).ToList();