Como ordenar uma lista por uma propriedade no objeto em C#

Minahil Noor 30 janeiro 2023 1 novembro 2020
  1. Utilize o método OrderBy para ordenar uma lista por uma propriedade no objeto em C#
  2. Use um Delegado para ordenar uma lista por um bem no objeto em C#
Como ordenar uma lista por uma propriedade no objeto em C#

Este artigo introduzirá diferentes métodos para ordenar uma lista por um bem no objeto usando o código C#.

  • Usando o método OrderBy
  • Usando o delegado

Utilize o método OrderBy para ordenar uma lista por uma propriedade no objeto em C#

Utilizaremos a função embutida OrderBy para ordenar uma lista por um imóvel no objeto. É o método do LINQ. Este método cria uma nova lista ordenada pelo bem em questão. A sintaxe correta para utilizar este método para ordenar uma lista por um bem é a seguinte.

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

A função embutida OrderBy tem dois parâmetros. Os detalhes de seus parâmetros são os seguintes.

Parâmetros Descrição
varName obrigatório É o nome da variável para a lista fornecida.
property obrigatório É a propriedade que utilizaremos para ordenar nossa lista.

O programa abaixo mostra como podemos usar esta função para ordenar uma lista por um bem no 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]

Use um Delegado para ordenar uma lista por um bem no objeto em C#

Também podemos usar o delegado personalizado para ordenar uma lista por um imóvel no objeto. A sintaxe correta para utilizar um delegate é a seguinte.

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

O programa abaixo mostra como podemos utilizar um delegado para ordenar uma lista por um bem no 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]

Artigo relacionado - Csharp Method

Artigo relacionado - Csharp Parameter