485 Stimmen

List<T> OrderBy Alphabetische Reihenfolge

Ich verwende C# auf Framework 3.5. Ich bin auf der Suche nach schnell sortieren ein Generic List<T> . Für dieses Beispiel nehme ich an, ich habe eine Liste von Person mit einer Eigenschaft von lastname. Wie würde ich diese Liste mithilfe eines Lambda-Ausdrucks sortieren?

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

6voto

Iman Punkte 16668

Für mich dieser nützliche Dummy-Leitfaden - Sortieren in einer allgemeinen Liste - gearbeitet. es hilft Ihnen, 4 Wege (Überlastungen) zu verstehen, um diese Aufgabe mit sehr vollständigen und klaren Erklärungen und einfachen Beispielen zu erledigen

  • Liste.Sortieren ()
  • List.Sort (Generischer Vergleich)
  • List.Sort (Generischer IComparer)
  • List.Sort (Int32, Int32, Generic IComparer)

6voto

Sie können dieses Codeschnipsel verwenden:

var New1 = EmpList.OrderBy(z => z.Age).ToList();

donde New1 es un List<Employee> .

EmpList ist eine Variable einer List<Employee> .

z ist eine Variable von Employee Typ.

6voto

rosselder83 Punkte 92

Sie können auch Folgendes verwenden

model.People = model.People.OrderBy(x => x.Name).ToList();

2voto

howserss Punkte 1090

Dies ist ein allgemeiner 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 namens page_permission.

dvm.UserNameSortDir ist eine String-Eigenschaft auf dem Viewmodel, die die nächste Sortierrichtung enthält. Diejenige, die tatsächlich in der Ansicht verwendet wird.

switch (sortColumn)
{
    case "user_name":
        dvm.PagePermissions = Sort(dvm.PagePermissions, p => p.user_name, ref sortDir);
        dvm.UserNameSortDir = sortDir;
        break;
    case "role_name":
        dvm.PagePermissions = Sort(dvm.PagePermissions, p => p.role_name, ref sortDir);
        dvm.RoleNameSortDir = sortDir;
        break;
    case "page_name":
        dvm.PagePermissions = Sort(dvm.PagePermissions, p => p.page_name, ref sortDir);
        dvm.PageNameSortDir = sortDir;
        break;
}                 

public List<T> Sort<T,TKey>(List<T> list, Func<T, TKey> sorter, ref string direction)
    {
        if (direction == "asc")
        {
            list = list.OrderBy(sorter).ToList();
            direction = "desc";
        }
        else
        {
            list = list.OrderByDescending(sorter).ToList();
            direction = "asc";
        }
        return list;
    }

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X