Cómo ordenar una lista por una propiedad en el objeto en C#

  1. Use el método OrderBy para ordenar una lista por una propiedad en el objeto en C
  2. Usar un delegado para ordenar una lista por una propiedad en el objeto en C

Este artículo introducirá diferentes métodos para ordenar una lista por una propiedad en el objeto usando código C#.

  • Usando el método OrderBy
  • Usando el delegate

Use el método OrderBy para ordenar una lista por una propiedad en el objeto en C

Usaremos la función incorporada OrderBy para ordenar una lista por una propiedad en el objeto. Es el método de LINQ. Este método crea una nueva lista ordenada por la propiedad dada. La sintaxis correcta para usar este método para ordenar una lista por una propiedad es la siguiente.

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

La función incorporada OrderBy tiene dos parámetros. Los detalles de sus parámetros son los siguientes.

Parámetros Descripción
varName obligatorio Es el nombre de la variable para la lista dada.
property obligatorio Es la propiedad que usaremos para ordenar nuestra lista.

El siguiente programa muestra cómo podemos usar esta función para ordenar una lista por una propiedad del objeto.

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

Resultado:

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

Usar un delegado para ordenar una lista por una propiedad en el objeto en C

También podemos usar el delegado personalizado para ordenar una lista por una propiedad en el objeto. La sintaxis correcta para usar un delegate es la siguiente.

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

El programa de abajo muestra cómo podemos usar un delegado para ordenar una lista por una propiedad en el objeto.

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

Resultado:

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

Artículo relacionado - Csharp Method

  • C# pasa múltiples parámetros a un método get
  • Parámetro opcional en C#
  • Artículo relacionado - Csharp Parameter

  • C# pasa múltiples parámetros a un método get
  • Cómo pasar un método como parámetro en la función C#