Wie sortiere ich eine Liste nach einer Eigenschaft im Objekt in C#

  1. Verwenden Sie die Methode OrderBy, um eine Liste nach einer Eigenschaft des Objekts in C# zu sortieren
  2. Verwenden Sie einen Delegierten, um eine Liste nach einer Eigenschaft im Objekt in C# zu sortieren

In diesem Artikel werden verschiedene Methoden zum Sortieren einer Liste nach einer Eigenschaft im Objekt unter Verwendung von C#-Code vorgestellt.

  • Verwendung der OrderBy-Methode
  • Verwendung des Delegierten

Verwenden Sie die Methode OrderBy, um eine Liste nach einer Eigenschaft des Objekts in C# zu sortieren

Wir werden die eingebaute Funktion OrderBy verwenden, um eine Liste nach einer Eigenschaft des Objekts zu sortieren. Dies ist die Methode von LINQ. Diese Methode erzeugt eine neue Liste, die nach der angegebenen Eigenschaft sortiert ist. Die korrekte Syntax für die Verwendung dieser Methode zum Sortieren einer Liste nach einer Eigenschaft lautet wie folgt.

ListName.Orderby(varName => varName.property);

Die eingebaute Funktion OrderBy hat zwei Parameter. Die Einzelheiten ihrer Parameter sind wie folgt.

Parameter Beschreibung
varName obligatorisch Es ist der Variablenname für die gegebene Liste.
property obligatorisch Es ist die Eigenschaft, die wir zum Sortieren unserer Liste verwenden werden.

Das folgende Programm zeigt, wie wir diese Funktion verwenden können, um eine Liste nach einer Eigenschaft des Objekts zu sortieren.

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

public class Flowers
{
    public string name;
    public int priority;

    public Flowers(string name, int priority) {
        this.name = name;
        this.priority = priority;
    }

    public override string ToString()
    {
        return "[" + name + "," + priority + "]";
    }
}

public class Example
{
    public static void Main()
    {
        Flowers hibiscus = new Flowers("Hibiscus", 3);
        Flowers rose = new Flowers("Rose", 1);
        Flowers lili = new Flowers("Lili", 4);

        List<Flowers> mylist = new List<Flowers>() { hibiscus, rose, lili };

        List<Flowers> sorted = mylist.OrderBy(x => x.priority).ToList();
        Console.WriteLine(String.Join(Environment.NewLine, sorted));
    }
}

Ausgabe:

[Rose,1]
[Hibiscus,3]
[Lili,4]

Verwenden Sie einen Delegierten, um eine Liste nach einer Eigenschaft im Objekt in C# zu sortieren

Wir können auch den benutzerdefinierten Delegierten verwenden, um eine Liste nach einer Eigenschaft im Objekt zu sortieren. Die korrekte Syntax zur Verwendung eines delegate lautet wie folgt.

[access modifier] delegate [return type] [delegate name]([parameters])

Das Programm unten zeigt, wie wir einen delegate verwenden können, um eine Liste nach einer Eigenschaft im Objekt zu sortieren.

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

public class Flowers
{
    public string name;
    public int priority;

    public Flowers(string name, int priority) {
        this.name = name;
        this.priority = priority;
    }

    public override string ToString()
    {
        return "[" + name + "," + priority + "]";
    }
}

public class Example
{
    public static void Main()
    {
        Flowers hibiscus = new Flowers("Hibiscus", 3);
        Flowers rose = new Flowers("Rose", 1);
        Flowers lili = new Flowers("Lili", 4);

        List<Flowers> mylist = new List<Flowers>() { hibiscus, rose, lili };

    mylist.Sort(delegate(Flowers x, Flowers y) {
            return x.priority.CompareTo(y.priority);
        });

        Console.WriteLine(String.Join(Environment.NewLine, mylist));
    }
}

Ausgabe:

[Rose,1]
[Hibiscus,3]
[Lili,4]

Verwandter Artikel - Csharp Method

  • Wie übergibt man eine Methode als Parameter in einer C#-Funktion
  • Verwandter Artikel - Csharp Parameter