LINQ mínimo

Resumo : neste tutorial, você aprenderá como usar o Min()método LINQ para obter o elemento mínimo em uma sequência.

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

O Min()é um método de extensão LINQ que retorna o valor mínimo em uma sequência de valores. A sintaxe do Min()método é a seguinte:

public static TResult? Min (
   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 que contém o IEnumerable<T> .

O Min()retorna o valor mínimo da sourcesequência. Ele ignora nullna sourcesequência.

Se a sourcesequência estiver vazia, Min()lança um InvalidOperationException. Além disso, se a sourcesequência for null, o método lançará um ArgumentNullexception.

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

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

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

Exemplos de métodos LINQ Min()

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

1) Usando o método LINQ Min() para encontrar o valor mínimo em uma matriz de inteiros

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

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

Saída:

Minimum value = 2Linguagem de código:  C#  ( cs )

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

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

string[] words = { "apple", "banana", "mango" };
int minLength = words.Min(word => word.Length);
Console.WriteLine($"Minimum length = {minLength}");Linguagem de código:  C#  ( cs )

Saída:

Minimum length = 5Linguagem de código:  C#  ( cs )

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

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

Por exemplo:

int[] lengths = {};
var minLength = lengths.DefaultIfEmpty(0).Min();
Console.WriteLine($"Minimum value = {minLength}");Linguagem de código:  C#  ( cs )

Saída:

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

3) Usando o método LINQ Min() com uma sequência de objetos de um tipo personalizado

Suponha que você tenha uma classe Produto com duas propriedades Nome e Preço:

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

    public decimal Price
    {
        get; set;
    }

    public Product(string name, decimal price)
    {
        Name = name;
        Price = price;
    }
}Linguagem de código:  JavaScript  ( javascript )

O programa a seguir usa o método Min() para encontrar o preço mínimo em uma lista de produtos:

using static System.Console;

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

var minPrice = products.Min(p => p.Price);
WriteLine(minPrice);Linguagem de código:  JavaScript  ( javascript )

Saída:

100

Ele retorna 100 conforme o esperado.

Para encontrar um produto que tenha preço mínimo, você pode usar o MinBy()método.

Resumo

  • Use o Min()método LINQ para encontrar o valor mínimo em uma sequência.
  • Use o DefaultIfEmpty()método com o Min()método para especificar um valor mínimo 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 *