Linq - Consulta Simples não funciona

02/08/2018

0

Pessoal,

Eu estou tendo um problema com Linq To Object que eu nunca tive antes;

 public DALClientePessoaJuridica()
        {
            _lstClientes = new List<ClientePessoaJuridica>();
            ClientePessoaJuridica _cliente;
            // Inclusão de clientes

            _cliente = new ClientePessoaJuridica();
            _cliente.Codigo = 1;
            _cliente.Nome = "Contábil Rio";
            _cliente.CNPJ = "0001";
            _cliente.Estado = "RJ";
            _cliente.DataCadastro = Convert.ToDateTime("15/01/2017");
            _lstClientes.Add(_cliente);

            _cliente = new ClientePessoaJuridica();
            _cliente.Codigo = 2;
            _cliente.Nome = "Audit Master Assessoria Jurídica";
            _cliente.Estado = "RJ";
            _cliente.DataCadastro = Convert.ToDateTime("23/02/2017");
            _lstClientes.Add(_cliente);

            _cliente = new ClientePessoaJuridica();
            _cliente.Codigo = 3;
            _cliente.Nome = "RioKasa Empreendimentos imobilitários";
            _cliente.Estado = "SP";
            _cliente.DataCadastro = Convert.ToDateTime("13/04/2015");
            _lstClientes.Add(_cliente);

            _cliente = new ClientePessoaJuridica();
            _cliente.Codigo = 4;
            _cliente.Nome = "GAX Locadora de geradores";
            _cliente.Estado = "RJ";
            _cliente.DataCadastro = Convert.ToDateTime("25/03/2017");
            _lstClientes.Add(_cliente);

            _cliente = new ClientePessoaJuridica();
            _cliente.Codigo = 5;
            _cliente.Nome = "Licitus Consultoria e Empreendimentos";
            _cliente.Estado = "SP";
            _cliente.DataCadastro = Convert.ToDateTime("18/05/2016");
            _lstClientes.Add(_cliente);

        }

        public ClientePessoaJuridica ObterPorCodigo(Int32 pCodigo)
        {
            ClientePessoaJuridica _cliente = (from cliente in _lstClientes
                                              where cliente.Codigo == pCodigo
                                              select cliente) as ClientePessoaJuridica;
            
            return _cliente;
        }


A consulta do método ObterPorCodigo simplesmente não funciona. O retorno da consulta é sempre null mesmo eu informando um código que existe na lista.

Alguém já passou por isso?
Carlos Corbo

Carlos Corbo

Responder

Post mais votado

02/08/2018

posso estar enganado mas acredito que é o seu cast no final.
Tente trocar
ClientePessoaJuridica _cliente = (from cliente in _lstClientes
where cliente.Codigo == pCodigo
select cliente) as ClientePessoaJuridica;
Para
var resultado = (from cliente in _lstClientes
where cliente.Codigo == pCodigo
select cliente);
E veja se o tipo da variável resultado se ela não for nulla.

Eu particulamente prefiro trabalhar com Lambda.
Ficaria mais ou menos assim o seu
ClientePessoaJuridica _cliente = _lstClientes.SingleOrDefault(cli => cli.Codigo == pCodigo);
O _cliente será nullo quando não encontrar.

Carlos Augusto

Carlos Augusto
Responder

Mais Posts

19/11/2018

Carlos Corbo

Cutpro,

Eu resolvi o problema na ocasião, mas eu esqueci de postar a solução. O problema é que do jeito que eu fiz, o compilador não tinha como garantir que só viria somente um objeto na consulta e assim que deveria acontecer uma vez que eu coloquei uma variável que só poderia receber um valor. Então eu resolvi da seguinte forma:

ClientePessoaJuridica _cliente = (from cliente in _lstClientes
where cliente.Codigo == pCodigo
select cliente).FirstAndDefault;

O comando FirstAndDefault garantir que virá o primeiro ou nenhum caso não retorne nenhum objeto. Isso vale também para Lambda.

De qualquer forma, obrigado.
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar