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

[Sugestão] Pesquisa de contas por número de agência não retorna nulo.

Ao ser testado o código da aula, com uma agência inválida, a mensagem de "... A consulta não retornou dados ..." não aparece. Descobri que o seguinte método, na verdade, não retorna null caso não haja respostas, mas sim uma lista de tamanho 0:

List<ContaCorrente> ConsultaPorAgencia(int numeroAgencia)
{
    List<ContaCorrente> consulta = new List<ContaCorrente>((
        from conta in _listaDeContas
        where conta.Numero_agencia == numeroAgencia
        select conta
    ).ToList());

    return consulta;
}

Troquei as variáveis var para List para tentar forçar a dar null, mas não deu resultado. A forma que encontrei para ajustar este erro foi forçar o método a passar null para consulta caso a List venha com tamanho == 0:

List<ContaCorrente> ConsultaPorAgencia(int numeroAgencia)
{
    List<ContaCorrente> consulta = (
        from conta in _listaDeContas
        where conta.Numero_agencia == numeroAgencia
        select conta
    ).ToList();

    if (consulta.Count() == 0)
    {
        consulta = null;
    }

    return consulta;
}

Também gostaria de saber o por quê que esta List não está retornando null.

1 resposta
solução!

Bom dia Andriele, tudo bom?

Muito bacana, você chegar em uma solução. No vídeo Uma nova pesquisa o método de pesquisa ConsultaPorAgencia ficou bem simples mesmo:

 private List<ContaCorrente> ConsultaPorAgencia(int numeroAgencia)
        {
            var consulta = (
                         from conta in _listaDeContas
                         where conta.Numero_agencia == numeroAgencia
                         select conta).ToList();
            return consulta;
        }

A responsabilidade de exibir a mensagem para ... A consulta não retornou dados ... foi implementada no método ExibirListaDeContas:

 private void ExibirListaDeContas(List<ContaCorrente> contasPorAgencia)
        {
            if (contasPorAgencia == null)
            {
                Console.WriteLine(" ... A consulta não retornou dados ...");
            }
            else
            {
                foreach (var item in contasPorAgencia)
                {
                    Console.WriteLine(item.ToString());
                }
            }
        }

E na chamada da função de consulta ficou assim:

 case 3:
                    {
                        Console.Write("Informe o Nº da Agência: ");
                        int _numeroAgencia = int.Parse(Console.ReadLine());
                        var contasPorAgencia = ConsultaPorAgencia(_numeroAgencia);
                        ExibirListaDeContas(contasPorAgencia);
                        Console.ReadKey();
                        break;
                    }

Poderiamos até simplificar:

 case 3:
                    {
                        Console.Write("Informe o Nº da Agência: ");
                        int _numeroAgencia = int.Parse(Console.ReadLine());
                        ExibirListaDeContas(ConsultaPorAgencia(_numeroAgencia));
                        Console.ReadKey();
                        break;
                    }

Espero ter ajudado, qualquer coisa nos chame aqui no fórum!

Att.