Linq não retorna dados. Existe dados na tabela e eu retorno pela query

02/10/2014

0

Procurei fazer uma LINQ bem semelhante a minha query. Essa é minha query.

select * from PDV
where tipo_PDV = 'R' and UF = 'DF' and Cidade = 'BRASILIA-DF'

Essa é minha LINQ

var resultado_rede_descricao = (from _pdv in db.PDV
                                            //.Where(r => r.Tipo_PDV == _tipo_rede)
                                            select new { _pdv.Descricao, _pdv.Tipo_PDV, _pdv.UF, _pdv.Cidade }).ToList().DistinctBy(u => u.UF).DistinctBy(c => c.Cidade).Distinct();

            if(_tipo_rede != "E")
            {
                resultado_rede_descricao = resultado_rede_descricao.Where(t => t.Tipo_PDV == _tipo_rede).Distinct().ToList().OrderBy(o => o.Descricao);
            }

            if (_uf != "E")
            {
                resultado_rede_descricao = resultado_rede_descricao.Where(u => u.UF == _uf).Distinct().ToList().OrderBy(o => o.Descricao);
            }

            if (_cidade != "" && _cidade != "Todos")
            {
                resultado_rede_descricao = resultado_rede_descricao.Where(u => u.Cidade == _cidade).Distinct().ToList().OrderBy(o => o.Descricao);

}
Nesse exemplo:
_tipo_rede = "R", _uf = "DF" e _cidade = "BRASILIA-DF"
Pjava

Pjava

Responder

Posts

02/10/2014

Pjava

Resolvi.

Retirei o DistinctBy() do LINQ pricipal. Ainda não entendi a diferença entre o Distinct e o DistinctBy. Tenho procurado livros sobre LINQ e Lambda e não achei nada ainda, aui em Sampa(Nobel, Saraiva, Martins Fontes), nenhuma dessas livrarias eu encontrei algo do gênero.
Responder

02/10/2014

Joel Rodrigues

Distinct() usa o operador de igualdade padrão do tipo. Já o DistinctBy() lhe permite informar uma propriedade do tipo pela qual você quer fazer a distinção.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar