Sortieren einer Liste nach einem Feld in C#

Sortieren einer Liste nach einem Feld in C#

  1. Verwendung von die Methode Sort() zum Sortieren einer Liste nach Filed in C#
  2. Verwenden Sie die Methode OrderBy(), um eine Liste nach Ablage in C# zu sortieren

In diesem Artikel wird erläutert, wie Sie die C#-Funktion Sort() und das Schlüsselwort OrderBy() von LINQ verwenden, um eine Liste in aufsteigender und absteigender Reihenfolge zu sortieren.

Zunächst müssen wir die notwendigen Bibliotheken importieren, um die daraus abgeleiteten Funktionen in unserem Beispiel nutzen zu können.

using System;
using System.Linq;
using System.Collections.Generic;

Erstellen Sie eine Klasse namens PersonData und definieren Sie darin eine Variable namens name mit dem Datentyp string mit ihrem Konstruktor und einer Methode, die eine Eingabe in einen Stringwert umwandelt und zurückgibt.

public class PersonData
{
    public string name;

    public PersonData(string name)
    {
        this.name = name;
    }
 
    public override string ToString() {
        return name;
    }
}

Dann deklarieren wir 5 Variablen mit dem Datentyp PersonData und weisen ihnen einige String-Werte zu.

PersonData tom = new PersonData ("Tom");
PersonData roger = new PersonData ("Roger");
PersonData fred = new PersonData ("Fred");
PersonData jack = new PersonData ("Jack");
PersonData anna = new PersonData ("Anna");

Um die Sortierung in diesen Feldern zu implementieren, müssen wir eine Liste erstellen und diese Daten in die Liste mergedList einfügen.

List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };

Verwendung von die Methode Sort() zum Sortieren einer Liste nach Filed in C#

Dies ist die erste Möglichkeit, eine Liste in aufsteigender Reihenfolge zu sortieren. Wir rufen einfach diesen Listennamen auf, der im oberen Codeblock mit der Funktion Sort() definiert ist, und übergeben zwei Argumente, anhand derer die Werte verglichen werden, um sie in aufsteigender Reihenfolge zu sortieren.

mergedList.Sort((x, y) =>
{
    int ret = String.Compare(x.name, y.name);
        return ret;
});

Beispiel:

using System;
using System.Linq;
using System.Collections.Generic;
 
public class PersonData
{
    public string name;

 
    public PersonData(string name)
    {
        this.name = name;
   
    }
 
    public override string ToString() {
        return name;
    }
}
 
public class SortList
{
    public static void Main()
    {
        PersonData tom = new PersonData("Tom");
        PersonData roger = new PersonData("Roger");
        PersonData fred = new PersonData("Fred");
        PersonData jack = new PersonData("Jack");
        PersonData anna = new PersonData("Anna");

 
        List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };
 
        mergedList.Sort((x, y) => {
                        int ret = String.Compare(x.name, y.name);
                        return ret;
                    });
 
        Console.WriteLine(String.Join(Environment.NewLine, mergedList));
    }
}

Die Ausgabe der Liste Vor der Sortierung:

Tom
Roger
Fred
Jack
Anna

Die Ausgabe der Liste Nach dem Sortieren:

Anna
Fred
Jack
Roger
Tom

Nachdem Sie die Liste in aufsteigender Reihenfolge sortiert haben, können Sie einfach die Methode ‘Reverse()’ aufrufen, um sie in absteigender Reihenfolge zu sortieren:

mergedList.Reverse();

Die Ausgabe der Liste in absteigender Reihenfolge sieht wie folgt aus:

Tom
Roger
Jack
Fred
Anna

Verwenden Sie die Methode OrderBy(), um eine Liste nach Ablage in C# zu sortieren

Dies ist die alternative Methode zum Sortieren einer Liste in aufsteigender Reihenfolge. Wir rufen einfach den im vorherigen Codeblock erstellten Listennamen auf, indem wir die Methode OrderBy() verwenden und ein Argument angeben, gegen das die Werte geprüft werden, um sie in aufsteigender Reihenfolge zu sortieren.

Syntax:

List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();

Beispiel:

using System;
using System.Linq;
using System.Collections.Generic;
 
public class PersonData
{
    public string name;

    public PersonData(string name)
    {
        this.name = name;
    }
 
    public override string ToString() {
        return name;
    }
}
public class SortList
{
    public static void Main()
    {
        PersonData tom = new PersonData("Tom");
        PersonData roger = new PersonData("Roger");
        PersonData fred = new PersonData("Fred");
        PersonData jack = new PersonData("Jack");
        PersonData anna = new PersonData("Anna");
 
        List<PersonData> mergedList = new List<PersonData>() { tom, roger, fred, jack, anna };
 
        List<PersonData> sortedList = mergedList.OrderBy(x => x.name)
                                    .ToList();
 
        Console.WriteLine(String.Join(Environment.NewLine, sortedList));
    }
}

Die Ausgabe der Liste Vor der Sortierung:

Tom
Roger
Fred
Jack
Anna

Die Ausgabe der Liste Nach dem Sortieren:

Anna
Fred
Jack
Roger
Tom

Um diese Liste in absteigender Reihenfolge zu sortieren, können Sie einfach eine Funktion Reverse() aufrufen, nachdem Sie die Liste wie folgt in aufsteigender Reihenfolge sortiert haben:

List<PersonData> sortedList = mergedList.OrderBy(x => x.name).ToList();

sortedList.Reverse();

Die Ausgabe der Liste in absteigender Reihenfolge sieht wie folgt aus:

Tom
Roger
Jack
Fred
Anna
Author: Saad Aslam
Saad Aslam avatar Saad Aslam avatar

I'm a Flutter application developer with 1 year of professional experience in the field. I've created applications for both, android and iOS using AWS and Firebase, as the backend. I've written articles relating to the theoretical and problem-solving aspects of C, C++, and C#. I'm currently enrolled in an undergraduate program for Information Technology.

LinkedIn

Verwandter Artikel - Csharp List

  • So konvertieren Sie einen IEnumerable in eine Liste in C#
  • C# Element aus der Liste entfernen
  • C# Zwei Listen zusammenfügen
  • Konvertieren das Dictionary in eine Listensammlung in C#
  • HashSet vs. Liste in C#