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
é 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:Max()
public static TResult? Max (
this IEnumerable<TSource?> source
);
Linguagem de código: C# ( cs )
Nesta sintaxe:
TSource
é o tipo de elemento nasource
sequência.source
é a sequência de entrada com IEnumerable<T> .
O Max()
retorna o valor máximo da source
sequência. O método ignora null
na source
sequência.
Se a source
sequência estiver vazia, o Max()
método lança um InvalidOperationExceptoin
. Caso a source
sequê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 source
sequê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 = 8
Linguagem 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 = 6
Linguagem 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 = 0
Linguagem 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 Product
classe que possui três propriedades Name
, Cost
e 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 Price
propriedade 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.cost
Linguagem 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 oMax()
método para especificar um valor máximo padrão se a sequência estiver vazia.