1
resposta

[Dúvida] Duvida de Lambda

não consegui entender essa linha "public int DuracaoTotal => musicas.Sum(m => m.Duracao);"

poderia me explicar e apresentar com código sem o uso do lambda por favor?

1 resposta

Helio,

Vou tentar explicar.

Vamos supor este código abaixo:

Console.WriteLine("---------------------------------");
Console.WriteLine($"Lista de músicas do álbum:\n");

int? DuracaoTotal = 0;

DuracaoTotal = musicas.Sum(m => m.Duracao)!;

Console.WriteLine($"Duração total: {DuracaoTotal}");
Console.WriteLine("---------------------------------");

A variável "m" é UMA música, já a variável "musicas" são TODAS as músicas.

É feito um "looping" passando por todas as músicas e somando o valor de cada uma colocando dentro da variável "DuracaoTotal".

Comparando agora o código abaixo:

Console.WriteLine("---------------------------------");
Console.WriteLine($"Lista de músicas do álbum:\n");

int? DuracaoTotal = 0;

foreach (Musica m in musicas)
    if (m.Duracao != null)
        DuracaoTotal += (int)m.Duracao;

Console.WriteLine($"Duração total: {DuracaoTotal}");
Console.WriteLine("---------------------------------");

Faz exatamente a mesma coisa. A única diferença é que ele NÃO usa LAMBDA o que torna o código menos enxuto.

Veja que temos um looping "foreach" para realizar o somatório das durações.

Por favor, leia mais em:

=============================

Expressões lambda e funções anônimas

Artigo - 08/03/2023

Func<int, int> square = x => x * x;
Console.WriteLine(square(5));
// Output:
// 25

https://learn.microsoft.com/pt-br/dotnet/csharp/language-reference/operators/lambda-expressions

=============================

Espero ter ajudado.

[]'s,

Fabio I.