Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Duvida com uma possivel utilizaçao do DefaultIfEmpty.

Tenho uma duvida ao inves de usar :

    get 
    {
        if (notas.Count == 0) return 0;
        else return notas.Avarage(a => a.Nota);
    }

Eu nao poderia usar o metodo DefaultIfEmpty? Ficando assim:

get
        {
            notas.DefaultIfEmpty().Average(x => x.Nota);
        }

Mas nesse caso eu tenho um problema, quando eu tento colocar o valor '0' entre os paréntesis, me da erro. Na verdade toda essa expressao esta me dando erro. Mas se eu coloco um return o erro some.

get
        {
            return notas.DefaultIfEmpty().Average(x => x.Nota);
        }

Mas mesmo assim nao consigo colocar um valor dento do DefaultIfEmpty.

2 respostas
solução!

Olá Victor!

A utilização do método DefaultIfEmpty é uma ótima ideia para tratar o caso em que a lista de notas está vazia. No entanto, o motivo pelo qual você está recebendo um erro ao tentar colocar o valor '0' entre os parênteses é porque o método DefaultIfEmpty não aceita um valor padrão como parâmetro.

Para resolver esse problema, você pode utilizar a estrutura condicional if para verificar se a lista está vazia e, caso esteja, retornar o valor '0'. Caso contrário, você pode retornar a média das notas utilizando o método Average.

Dessa forma, o código ficaria assim:

get
{
    if (notas.Count == 0)
    {
        return 0;
    }
    else
    {
        return notas.DefaultIfEmpty().Average(x => x.Nota);
    }
}

Essa solução garante que, caso a lista de notas esteja vazia, a média retornada será '0'. Caso contrário, a média será calculada corretamente.

Espero ter ajudado e bons estudos!

Com certeza me ajudou muito, me deu uma ótima visão de como solucionar um problema .