Ordinare una lista in base a una proprietà nell'oggetto in C#

  1. Usa il metodo OrderBy per ordinare una lista in base a una proprietà nell’oggetto in C
  2. Usare un delegato per ordinare una lista in base a una proprietà nell’oggetto in C

Questo articolo introdurrà diversi metodi per ordinare una lista in base a una proprietà nell’oggetto usando il codice C#.

  • Utilizzando il metodo OrderBy
  • Utilizzo di delegate

Usa il metodo OrderBy per ordinare una lista in base a una proprietà nell’oggetto in C

Useremo la funzione incorporata OrderBy per ordinare una lista in base a una proprietà nell’oggetto. È il metodo di LINQ. Questo metodo crea un nuovo lista ordinato in base alla proprietà data. La sintassi corretta per utilizzare questo metodo per ordinare una lista in base a una proprietà è la seguente.

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

La funzione incorporata OrderBy ha due parametri. I dettagli dei suoi parametri sono i seguenti.

Parametri Descrizione
varName obbligatorio È il nome della variabile per l’lista fornito.
property obbligatorio È la proprietà che useremo per ordinare la nostra lista.

Il programma seguente mostra come utilizzare questa funzione per ordinare una lista in base a una proprietà nell’oggetto.

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));
    }
}

Produzione:

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

Usare un delegato per ordinare una lista in base a una proprietà nell’oggetto in C

Possiamo anche usare il delegato personalizzato per ordinare una lista in base a una proprietà nell’oggetto. La sintassi corretta per utilizzare un delegate è la seguente.

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

Il programma seguente mostra come utilizzare un delegato per ordinare una lista in base a una proprietà nell’oggetto.

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));
    }
}

Produzione:

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

Articolo correlato - Csharp Method

  • Passare un metodo come parametro nella funzione C#
  • C# Passa più parametri a un metodo Get
  • Articolo correlato - Csharp Parameter

  • C# Passa più parametri a un metodo Get
  • Parametro facoltativo in C#