2
respostas

[Bug] Problema com o a detecção da lista

    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;
        }
    default:
        Console.WriteLine("Opção não implementada.");
        break;

}

}

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

no meu projeto acima na parte do loop no case 3 ExibirListaDeContas(contasPorAgencia); ele nao me permite adicionar esse metodo pelo que entendi estudando ele me diz que ele nao o reconhece como um tipo de lista Insira aqui a descrição dessa imagem para ajudar na acessibilidade

2 respostas

Gabriel,

Eu fiz uma alteração no código para que não apareça mais o erro. Adicionei uma pequena verificação, veja o que você acha:

private void PesquisarContas()
{
    Console.Clear();
    Console.WriteLine("===============================");
    Console.WriteLine("===    PESQUISAR CONTAS     ===");
    Console.WriteLine("===============================");
    Console.WriteLine("\n");
    Console.Write("Deseja pesquisar por (1) NÚMERO DA CONTA ou (2)CPF TITULAR ou " +
        " (3) Nº AGÊNCIA : ");
    switch (int.Parse(Console.ReadLine()))
    {
        case 1:
            {
                Console.Write("Informe o número da Conta: ");
                string _numeroConta = Console.ReadLine();
                ContaCorrente consultaConta = ConsultaPorNumeroConta(_numeroConta);

                if (consultaConta != null)
                    Console.WriteLine(consultaConta.ToString());
                else
                    Console.WriteLine("Não retornou nenhuma conta.");

                Console.ReadKey();
                break;
            }
        case 2:
            {
                Console.Write("Informe o CPF do Titular: ");
                string _cpf = Console.ReadLine();
                ContaCorrente consultaCpf = ConsultaPorCPFTitular(_cpf);
                        
                if (consultaCpf != null)
                    Console.WriteLine(consultaCpf.ToString());
                else
                    Console.WriteLine("Não retornou nenhum CPF.");

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

                if (contasPorAgencia.Count > 0)
                    ExibirListaDeContas(contasPorAgencia);
                else
                    Console.WriteLine("Não retornou nenhuma Agência.");

                Console.ReadKey();
                break;
            }
        default:
            Console.WriteLine("Opção não implementada.");
            break;
    }

}

Agora eu não entendi sua função "ConsultaPorAgencia", por qual motivo você usou "object"? O meu código fonte está assim:

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

[]'s,

Fabio I.

Olá, Gabriel!

Pelo que entendi, você está com um problema na chamada do método ExibirListaDeContas(contasPorAgencia); no case 3, pois o sistema não está reconhecendo contasPorAgencia como uma lista, certo?

Aparentemente, o problema pode estar na definição do método ConsultaPorAgencia(_numeroAgencia);. Esse método deve retornar uma lista de ContaCorrente, que é o tipo de dado esperado pelo método ExibirListaDeContas().

Seguindo o exemplo da aula, o método ConsultaPorAgencia() deve estar assim:

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

Se você implementou o método ConsultaPorAgencia() dessa forma, ele irá retornar uma lista de contas correntes (List<ContaCorrente>) e a variável contasPorAgencia será do tipo correto para ser utilizada no método ExibirListaDeContas().

Se o método ConsultaPorAgencia() não estiver implementado dessa forma, ou se não estiver retornando uma lista de ContaCorrente, você encontrará problemas ao tentar passar contasPorAgencia como argumento para ExibirListaDeContas().

Verifique a implementação do seu método ConsultaPorAgencia() e certifique-se de que ele está retornando uma lista de ContaCorrente.

Espero ter ajudado e bons estudos!