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(???? => ?????)
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
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...)