Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Expressao lambda

Olá a todos! Por que não posso usar a linha abaixo: public double Media => notas.Average(Avaliacao.Nota); no lugar da linha: public double Media => notas.Average(a => a.Nota);

1 resposta
solução!

Olá, Carlos!

A questão que você levantou é muito interessante e comum quando começamos a trabalhar com expressões lambda e métodos de extensão como Average. Vamos lá!

A diferença entre as duas linhas de código que você mencionou está na forma como a propriedade Nota é acessada.

  1. Linha incorreta:

    public double Media => notas.Average(Avaliacao.Nota);
    

    Nesta linha, você está tentando passar Avaliacao.Nota como argumento para o método Average. No entanto, Avaliacao.Nota não é um método ou uma função que pode ser passada como argumento. Nota é uma propriedade de instância da classe Avaliacao, e para acessá-la, você precisa de uma instância dessa classe.

  2. Linha correta:

    public double Media => notas.Average(a => a.Nota);
    

    Aqui, você está usando uma expressão lambda a => a.Nota. Esta expressão percorre cada elemento a da lista notas e acessa a propriedade Nota de cada instância de Avaliacao. É assim que o método Average sabe qual valor usar para calcular a média.

A expressão lambda é necessária neste contexto porque notas é uma lista de objetos Avaliacao, e precisamos especificar qual propriedade de cada objeto queremos usar para o cálculo da média.

Espero ter ajudado e bons estudos!