Usuário com melhor resposta
Formatar CNPJ numa consulta LINQ

Pergunta
-
Pessoal, bom dia.
Estou tentando formatar um campo string e não consigo. Retorna sempre o valor do campo sem a mascara.
var lista = (from p in Pessoas.OfType<PessoaJuridica>()
where p.EFornecedor == true
select p)
.AsEnumerable()
.Select(x => new { x.PessoaID, x.NomeFantasia, CNPJ = Convert.ToInt64(x.CNPJ).ToString("##.###.###/####-##")});
alexcanario
Respostas
-
Uma forma seria você usar metodos de extensão:
Como?
using System; public static class Methods { public static string FormattedToCnpj(this long value) { return String.Format(@"{0:00\.000\.000\/0000\-00}", value); } } public class Program { public static void Main() { long cnpj = long.Parse("19570720000111"); Console.WriteLine(cnpj); Console.WriteLine(cnpj.FormattedToCnpj()); } }
Dessa forma funcionaria e você não precisava repetir o código só utilizar !!! Também acho melhor não jogar essa responsabilidade, porque é um grande erro e vai ocasionar erros!
Então!
Faça um classe com namespace proprio e chame quando precisar:
Exemplo:
namespace Utils { public static class Methods { public static string FormattedToCnpj(this long value) { return String.Format(@"{0:00\.000\.000\/0000\-00}", value); } } }
na hora que for percorrer a sua lista faça assim:
using Utils; foreach(PessoaJuridica ju in lista) { @ju.CNPJ.FormattedToCnpj() }
Pronto, além de ficar num padrão não tem aquela sugerada de código.
Só lembrando que o link2 funciona sim, perfeitamente!
Fulvio C
- Sugerido como Resposta robertosljunior quinta-feira, 4 de fevereiro de 2016 21:27
- Marcado como Resposta Marcos SJ sexta-feira, 5 de fevereiro de 2016 17:52
Todas as Respostas
-
Olá Alex Canario,
Tudo bem?
Poderia verificar se estes artigos te auxiliam com a informação que você precisa:
Não acha melhor validar isso com java sript antes de enviar o formulário?
Marcos SJ Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Obrigado Marcos.
Não estou tentando validar o cnpj, na verdade só quero exibir numa grid formatado. Não encontrei outra maneira de formata-lo senão na consulta linq.
Já havia tentando formatar como no link 02, mas tb não funcionou.
Sds
Alex
alexcanario
-
-
Uma forma seria você usar metodos de extensão:
Como?
using System; public static class Methods { public static string FormattedToCnpj(this long value) { return String.Format(@"{0:00\.000\.000\/0000\-00}", value); } } public class Program { public static void Main() { long cnpj = long.Parse("19570720000111"); Console.WriteLine(cnpj); Console.WriteLine(cnpj.FormattedToCnpj()); } }
Dessa forma funcionaria e você não precisava repetir o código só utilizar !!! Também acho melhor não jogar essa responsabilidade, porque é um grande erro e vai ocasionar erros!
Então!
Faça um classe com namespace proprio e chame quando precisar:
Exemplo:
namespace Utils { public static class Methods { public static string FormattedToCnpj(this long value) { return String.Format(@"{0:00\.000\.000\/0000\-00}", value); } } }
na hora que for percorrer a sua lista faça assim:
using Utils; foreach(PessoaJuridica ju in lista) { @ju.CNPJ.FormattedToCnpj() }
Pronto, além de ficar num padrão não tem aquela sugerada de código.
Só lembrando que o link2 funciona sim, perfeitamente!
Fulvio C
- Sugerido como Resposta robertosljunior quinta-feira, 4 de fevereiro de 2016 21:27
- Marcado como Resposta Marcos SJ sexta-feira, 5 de fevereiro de 2016 17:52
-
Acho que a resposta do Fulvio C responde sua pergunta.
Somente para complementar, se o seu tipo for uma string você não precisa fazer coerção, utilize Substring.
public static string ToCnpjFormat(this string text) { if (text.Length != 14) throw new ArgumentOutOfRangeException(text); return string.Format("{0}.{1}.{2}-{3}/{4}", text.Substring(0, 2), text.Substring(2, 3), text.Substring(5, 3), text.Substring(8, 4), text.Substring(12, 2)); }
ROBERTOSLJUNIOR
-
Acho que a resposta do Fulvio C responde sua pergunta.
Somente para complementar, se o seu tipo for uma string você não precisa fazer coerção, utilize Substring.
public static string ToCnpjFormat(this string text) { if (text.Length != 14) throw new ArgumentOutOfRangeException(text); return string.Format("{0}.{1}.{2}-{3}/{4}", text.Substring(0, 2), text.Substring(2, 3), text.Substring(5, 3), text.Substring(8, 4), text.Substring(12, 2)); }
ROBERTOSLJUNIOR
A sua vai servir realmente se o dado for do tipo String.Fulvio C