Início > Visual Studio / .Net > C# – Validando range de CEP

C# – Validando range de CEP

Desenvolvi uma validação em C# aonde uma “Área de exclusividade” (que  tem um CEP inicial e um CEP final) não podem conflitar com outras áreas.

No primeiro momento fiz a validação abaixo:

List<AreaExclusividadeDTO> conflitList = listAreaExclusividadeDTO.Where(a =>

a.CEPInicialInt <= objAreaExclusividadeDetail.CEPInicialInt &&

a.CEPFinalInt >= objAreaExclusividadeDetail.CEPFinalInt &&

a.IdObjeto != objAreaExclusividadeDetail.IdObjeto).ToList();

Depois percebi que a validação é falha quando um range de CEP está contido dentro do outro. Por exemplo:

  • Area de exclusividade 1: 04003000 a 04003999
  • Area de exclusividade 2: 04003100 a 04003200

Nesse caso, utilizei uma validação por “Enumerable.Range” conforme abaixo:

List conflitList = listAreaExclusividadeDTO.Where(a =>
(
Enumerable.Range(a.CEPInicialInt, a.CEPFinalInt - a.CEPInicialInt).
Contains(objAreaExclusividadeDetail.CEPInicialInt) == true ||
Enumerable.Range(a.CEPInicialInt, a.CEPFinalInt - a.CEPInicialInt).
Contains(objAreaExclusividadeDetail.CEPFinalInt) == true) &&
a.IdObjeto != objAreaExclusividadeDetail.IdObjeto
).ToList();


Lembrando que o segundo parâmetro do método Enumerable.Range é um “count”, e não o CEP final.
Fiquem atentos para não passar pelo mesmo erro que eu!

Anúncios
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: