Cómo ordenar una lista por una propiedad en el objeto en C#
-
Use el método
OrderBy
para ordenar una lista por una propiedad en el objeto enC#
-
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
- Parámetro opcional en C#
- Cómo pasar un método como parámetro en la función C#
- C# pasa múltiples parámetros a un método get
- Anular un método estático en C#
- Grupos de métodos en C#