Olá, Douglas! Como vai?
Primeiramente, seja bem-vindo à Alura! 💙
E você fez uma ótima observação! Para que o método RecuperaMaiorDesconto retorne a oferta com o maior desconto, ele deveria ordenar pela propriedade o.Desconto de forma decrescente, em vez de ordenar por o.Preco de forma crescente. A implementação atual está retornando a oferta com o menor preço, o que não necessariamente significa que ela tem o maior desconto.
Aqui está uma sugestão de como você poderia ajustar o método:
public OfertaViagem? RecuperaMaiorDesconto(Func<OfertaViagem, bool> filtro) => ofertaViagem
.Where(filtro)
.Where(o => o.Ativa)
.OrderByDescending(o => o.Desconto)
.FirstOrDefault();
Com essa modificação, o método ordenará as ofertas de forma que a com o maior desconto venha primeiro, e FirstOrDefault() retornará essa oferta.
Espero ter ajudado e fico à disposição se precisar.
Abraço e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado