Lijst Sorteer op alfabetische volgorde

Ik'm gebruik C# op Framework 3.5. Ik'ben op zoek om snel een Generieke List<T> te sorteren. Voor dit voorbeeld, laten we zeggen dat ik een List heb van het type Person met als eigenschap achternaam. Hoe zou ik deze List sorteren met behulp van een lambda expressie?

List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
Oplossing

Als je een in-place sort bedoelt (d.w.z. de lijst wordt bijgewerkt):

people.Sort((x, y) => string.Compare(x.LastName, y.LastName));

Als je een nieuwe lijst bedoelt:

var newList = people.OrderBy(x=>x.LastName).ToList(); // ToList optional
Commentaren (9)

Moet de lijst op zijn plaats gesorteerd worden, of alleen een geordende reeks van de inhoud van de lijst? Het laatste is gemakkelijker:

var peopleInOrder = people.OrderBy(person => person.LastName);

Om op zijn plaats te sorteren, heb je een IComparer of een Comparison nodig. Daarvoor zou je ProjectionComparer in MiscUtil kunnen overwegen.

(Ik weet dat ik MiscUtil blijf noemen - het blijft gewoon relevant...)

Commentaren (2)
people.OrderBy(person => person.lastname).ToList();
Commentaren (3)