LINQ máx.

Resumo : neste tutorial, você aprenderá como usar o Max()método LINQ para obter o valor máximo em uma sequência.

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

O LINQ Max()é um método de extensão que retorna o número máximo em uma sequência de números. Aqui está a sintaxe do Max()método:

public static TResult? Max (
   this IEnumerable<TSource?> source
);Linguagem de código:  C#  ( cs )

Nesta sintaxe:

  • TSourceé o tipo de elemento na sourcesequência.
  • sourceé a sequência de entrada com IEnumerable<T> .

O Max()retorna o valor máximo da sourcesequência. O método ignora nullna source sequência.

Se a sourcesequência estiver vazia, o Max()método lança um InvalidOperationExceptoin. Caso a sourcesequência seja null, o método lança um ArgumentNullexception.

O Max()método possui uma sobrecarga que aceita uma função seletora como segundo argumento:

public static TResult? Max (
   this IEnumerable<T?> source
   Func<TSource,TResult> selector
);Linguagem de código:  C#  ( cs )

A selectoré uma função de transformação que se aplica a cada elemento da sourcesequência.

Exemplos de métodos LINQ Max()

Vejamos alguns exemplos de uso do Max()método LINQ.

1) Usando o método LINQ Max() para encontrar o valor máximo em uma matriz de inteiros

O programa a seguir demonstra como usar o Max()método para encontrar o número máximo em uma matriz de inteiros:

int[] numbers = { 5, 2, 8, 3, 7 };
int max = numbers.Max();
Console.WriteLine($"Maximum value = {max} ");Linguagem de código:  C#  ( cs )

Saída:

Maximum value = 8Linguagem de código:  C#  ( cs )

2) Usando o método LINQ Max() com um exemplo de função seletora

O exemplo a seguir demonstra como usar o Max()método com uma função seletora para encontrar o comprimento máximo de uma sequência de strings:

string[] words = { "apple", "banana", "mango" };

int maxLength = words.Max(word => word.Length);

Console.WriteLine($"Maximum length = {maxLength}");Linguagem de código:  C#  ( cs )

Saída:

Maximum length = 6Linguagem de código:  C#  ( cs )

3) Usando o método LINQ Max() para encontrar uma string com uma sequência vazia

Se a sequência de entrada estiver vazia, o Max()método lançará um arquivo InvalidOperationException. Nesse caso, você pode usar o DefaultIfEmpty()método para especificar um valor máximo padrão e evitar a exceção. Por exemplo:

int[] lengths = { };

var maxLength = lengths.DefaultIfEmpty(0).Max();

Console.WriteLine($"Maximum value = {maxLength}");Linguagem de código:  C#  ( cs )

Saída:

Maximum value = 0Linguagem de código:  C#  ( cs )

4) Usando o método LINQ Max() para encontrar um objeto com valor de chave máximo em uma sequência

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:  JavaScript  ( javascript )

O programa a seguir usa o Max()método para encontrar o preço mais alto entre todos os produtos de uma lista:

using static System.Console;

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

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

WriteLine(product);Linguagem de código:  JavaScript  ( javascript )

Saída:

160

A função de seletor a seguir instrui o Max()método a comparar produtos por Pricepropriedade e retornar o preço mais alto:

p => p.Price Linguagem de código:  PHP  ( php )

Se quiser encontrar o produto com maior custo, você pode alterar a função do seletor para o seguinte:

p => p.costLinguagem de código:  PHP  ( php )

Por exemplo:

using static System.Console;

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

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

WriteLine(product);Linguagem de código:  JavaScript  ( javascript )

Saída:

140

Resumo

  • Use o Max()método LINQ para encontrar o valor máximo em uma sequência.
  • Use o DefaultIfEmpty()método com o Max()método para especificar um valor máximo padrão se a sequência estiver vazia.

Deixe um comentário

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