Soma LINQ

Resumo : neste tutorial, você aprenderá como usar o Sum()método LINQ para calcular a soma de uma sequência de valores numéricos.

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

O Sum()é um método de extensão que calcula a soma de uma sequência de números. Os tipos de números podem ser Int32, Int64, Decimale Double:

TSource Sum (
    this IEnumerable<TSource> source
);Linguagem de código:  C#  ( cs )

Nesta sintaxe:

  • TSourceé o tipo de elementos na sequência de origem.
  • sourceé a sequência de entrada. Seu tipo é IEnumerable<T>.

Além de aceitar uma sequência de números, o Sum()método aceita uma sequência de números anuláveis ​​como Nullable<Int32>,,, Nullable<Int64>… Porém, o Sum()método ignora nullelementos no cálculo. Se a sequência estiver vazia, o Sum()método retornará zero.

O Sum()método possui uma sobrecarga que aceita um segundo argumento como função seletora que especifica quais valores selecionar para somar:

static TSource Sum<TSource>(
    this IEnumerable<TSource> source,
    Func<TSource, decimal> selector
)Linguagem de código:  C#  ( cs )

Nesta sintaxe, a selectorfunção recebe dois argumentos. O primeiro argumento é a sourcesequência e o segundo é a selectorfunção.

O selectorpega um elemento da sourcesequência e retorna o valor para calcular a soma. O Sum()método retorna a soma dos valores selecionados.

Exemplos de soma() de LINQ

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

1) Usando o método Sum() para calcular a soma de inteiros

O programa a seguir demonstra como usar o Sum()método para calcular o total de inteiros:

using static System.Console;

int[] numbers = { 1, 2, 3, 4, 5 };

var total = numbers.Sum();

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

Saída:

15Linguagem de código:  C#  ( cs )

O Sum()também funciona com uma sequência de números inteiros anuláveis. Por exemplo:

using static System.Console;

int?[] numbers = { 1, 2, 3, 4, 5, null };

var total = numbers.Sum();

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

Saída:

10Linguagem de código:  C#  ( cs )

Neste exemplo, o Sum()método ignora o elemento nulo. Como resultado, ele retorna 10.

2) Usando o método Sum() para calcular a soma de uma sequência de objetos

O programa a seguir demonstra como usar o Sum()método para calcular o valor total de um pedido:

using static System.Console;

class Item
{
    public string? Name;
    public decimal? Amount;
}

class Order
{
    private List<Item> items = new();
    public void Add(Item item) 
    {
        items.Add(item);
    }

    public List<Item> Items { get { return items; }}

}

class Program
{
    public static void Main(string[] args)
    {
        var order = new Order();
        order.Add(new Item { Name = "A", Amount = 9.99M });
        order.Add(new Item { Name = "B", Amount = 14.99M });
        order.Add(new Item { Name = "C", Amount = 4.99M });

        var total = order.Items.Sum(item => item.Amount);
        WriteLine(total);
    }
}Linguagem de código:  C#  ( cs )

Primeiro, defina a Itemclasse que possui dois campos públicos: Namee Amount, que representam o nome e o preço de um item respectivamente.

A seguir, defina a Orderclasse que possui o campo privado chamado items, que é uma lista de Itemobjetos. A classe Order possui o Add()método que adiciona um Itemobjeto à itemslista. Expõe o itemscomo propriedade pública Items.

Em seguida, no Main()método, crie um novo objeto de pedido e adicione três itens aos pedidos usando o Add()método.

Depois disso, utilize o Sum()método para calcular o valor total do pedido. Chamamos o Sum()método na Itemspropriedade do objeto order, que retorna uma lista de objetos Item. O Sum()método utiliza uma expressão lambda que especifica como selecionar valores para calcular a soma. Neste caso, a expressão lambda item => item.Amountseleciona o Amountcampo de cada Itemobjeto da lista.

Por fim, escreva o valor total no console.

Resumo

  • Use o método LINQ Sum()para calcular a soma dos elementos de uma sequência.

Deixe um comentário

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