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

Minahil Noor 16 febrero 2024
  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#
Cómo 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

Artículo relacionado - Csharp Parameter