LINQ MaxBy

Resumo : neste tutorial você aprenderá como usar o MaxBy()método LINQ para retornar o elemento com o valor máximo em uma sequência.

Introdução ao método LINQ MaxBy()

O MaxBy()método retorna o valor máximo em uma sequência baseada em uma função seletora de chave:

TSource? MaxBy<TSource,TKey> (
    this Enumerable<TSource> source, 
    Func<TSource,TKey> keySelector
);Linguagem de código:  C#  ( cs )

Nesta sintaxe;

  • TSourceé o tipo de elemento na sequência de origem.
  • TKeyé um tipo de chave usada para comparar elementos.
  • sourceé uma sequência de entrada de elementos com IEnumerable<TSource>tipo.
  • keySelectoré uma função que extrai a chave de cada elemento.

O LINQ MaxBy()retorna o valor com a chave máxima na sequência.

Observe que o Max()método retorna o valor máximo dos elementos por uma chave enquanto o MaxBy()método retorna o elemento com o valor máximo pela chave.

Exemplos de métodos LINQ MaxBy()

Suponha que você tenha uma Productclasse que possui três propriedades Name, Coste Price:

public class Product
{
    public string Name
    {
        get; set;
    }

    public decimal Price
    {
        get; set;
    }

    public decimal Cost
    {
        get; set;
    }

    public Product(string name, decimal cost, decimal price)
    {
        Name = name;
        Cost = cost;
        Price = price;
    }

    public override string ToString() => $"{Name}, Cost:{Cost}, Price:{Price}";
}Linguagem de código:  C#  ( cs )

O programa a seguir usa o MaxBy()método para encontrar o produto que tem o preço mais alto:

using static System.Console;

var products = new List<Product>() {
    new Product(name:"A",cost:100,price:160),
    new Product(name:"B",cost:95,price:130),
    new Product(name:"C",cost:140,price:150),
};

var product = products.MaxBy(p => p.Price);

WriteLine(product);Linguagem de código:  C#  ( cs )

Saída:

A, Cost:100, Price:160Linguagem de código:  C#  ( cs )

Ele retorna o produto A com um preço de 160.

Para encontrar o produto com o custo mais alto, você altera a função do seletor de chave para selecionar a Costpropriedade em vez da propriedade Preço da seguinte forma:

using static System.Console;

var products = new List<Product>() {
    new Product(name:"A",cost:100,price:160),
    new Product(name:"B",cost:95,price:130),
    new Product(name:"C",cost:140,price:150),
};

var product = products.MaxBy(p => p.Cost);

WriteLine(product);Linguagem de código:  C#  ( cs )

Saída:

C, Cost:140, Price:150Linguagem de código:  C#  ( cs )

Resumo

  • Use o método LINQ MaxBy()para retornar o elemento com o valor máximo em uma sequência.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *