none
Dúvida com linq, fazer um IF ou algo parecido RRS feed

  • Pergunta

  • Tenho um campo que deverá aceitar um CNPJ ou Razão Social. Bem, acontece que minha consulta LINQ necessita entender o que realmente está sendo passado como parâmetro, se é CNPJ ou não. Dessa forma meu where será por CNPJ ou por Razão Social. Como eu faço isso na mesma consulta? O parâmetro vem do mesmo lugar. Abaixo minha consulta hoje e como deverá estar:

    var resultado = (from web in db.Teste
                                 where web.CNPJ.StartsWith(pesquisaCnpj.cnpj)
                                 select new { web.CNPJ, web.RazaoSocial }).ToList();

    No where devo fazer a seleção se é um ou outro. Tentei usar LAMBDA mas não consegui fazer.

    quarta-feira, 7 de maio de 2014 19:21

Respostas

  • Boa tarde Pnet!

    Não sei entendi bem, mas na consulta você pode passar um CNPJ ou Razao Social e de acordo com o que ele passar você irá buscar no banco, é isso?

    Se for isso, acredito que a melhor solução serial validar essa parametro, ou seja, se for CNPJ Valido você busca por cnpj caso contrário busca por razao social.

    Ou você pode fazer um WHERE com OU buscando tanto por CNPJ quanto por Razao Social, ficando assim:

    var resultado = (from web in db.Teste
                                 where web.CNPJ.Equals(pesquisaCnpj.cnpj) || web.RazaoSocial.Contains(pesquisaCnpj.cnpj)
                                 select new { web.CNPJ, web.RazaoSocial }).ToList();

    Qualquer dúvida, fique a vontade para perguntar.

    Att.

    Rodolfo Oliveira

    • Marcado como Resposta pnet quarta-feira, 7 de maio de 2014 19:53
    quarta-feira, 7 de maio de 2014 19:34

Todas as Respostas

  • Boa tarde Pnet!

    Não sei entendi bem, mas na consulta você pode passar um CNPJ ou Razao Social e de acordo com o que ele passar você irá buscar no banco, é isso?

    Se for isso, acredito que a melhor solução serial validar essa parametro, ou seja, se for CNPJ Valido você busca por cnpj caso contrário busca por razao social.

    Ou você pode fazer um WHERE com OU buscando tanto por CNPJ quanto por Razao Social, ficando assim:

    var resultado = (from web in db.Teste
                                 where web.CNPJ.Equals(pesquisaCnpj.cnpj) || web.RazaoSocial.Contains(pesquisaCnpj.cnpj)
                                 select new { web.CNPJ, web.RazaoSocial }).ToList();

    Qualquer dúvida, fique a vontade para perguntar.

    Att.

    Rodolfo Oliveira

    • Marcado como Resposta pnet quarta-feira, 7 de maio de 2014 19:53
    quarta-feira, 7 de maio de 2014 19:34
  • Veja esse exemplo usando Lambda :

    var sql = db.TB1.AsQueryable();
    
                    if (tipo == "a")
                        sql = sql.Where(i => i.ID < 10);
                    else if (tipo == "b")
                        sql = sql.Where(i => i.ID > 10);
    
                    sql = sql.Select(i => i);
    
                    var resultado = sql.ToList();

    quarta-feira, 7 de maio de 2014 19:35