Ich verwende C # unter Framework 3.5. Ich suche schnell ein Generikum zu sortieren List<T>
. Person
Nehmen wir für dieses Beispiel an, ich habe eine Liste eines Typs mit der Eigenschaft Nachname. Wie würde ich diese Liste mit einem Lambda-Ausdruck sortieren?
List<Person> people = PopulateList();
people.OrderBy(???? => ?????)
Müssen Sie die Liste an Ort und Stelle sortieren oder nur eine geordnete Reihenfolge des Inhalts der Liste? Letzteres ist einfacher:
Zum Sortieren benötigen Sie ein
IComparer<Person>
oder einComparison<Person>
. Dafür möchten Sie vielleichtProjectionComparer
in MiscUtil berücksichtigen .(Ich weiß, dass ich MiscUtil immer wieder anspreche - es ist einfach immer relevant ...)
quelle
List<T>
, aber du brauchst es nicht, wenn du nur iterieren willst.Sie können linq verwenden :) mit:
quelle
quelle
OrderBy
nicht ändern", sondern neue "Sammlung" (normalerweise faulIEnumerable<T>
) zurückgeben, die etwas zugewiesen werden muss.quelle
Für mich hat diese nützliche Dummy-Anleitung - Sortieren in generischer Liste - funktioniert. Es hilft Ihnen, 4 Möglichkeiten (Überlastungen) zu verstehen, um diese Aufgabe mit sehr vollständigen und klaren Erklärungen und einfachen Beispielen zu erledigen
quelle
Sie können dieses Code-Snippet verwenden:
wo
New1
ist einList<Employee>
.EmpList
ist variabel von aList<Employee>
.z
ist eine Variable vomEmployee
Typ.quelle
var
Typ.New1
istList<Employee>
undz
istEmployee
.Sie können auch verwenden
quelle
Dies ist ein generischer Sortierer. Wird mit dem Schalter unten aufgerufen.
dvm.PagePermissions ist eine Eigenschaft in meinem ViewModel vom Typ List T, in diesem Fall ist T eine EF6-Modellklasse mit dem Namen page_permission.
dvm.UserNameSortDir ist eine Zeichenfolgeeigenschaft im Ansichtsmodell, die die nächste Sortierrichtung enthält. Diejenige, die tatsächlich in der Ansicht verwendet wird.
quelle