Olá pessoal, hoje eu vou falar e mostar como criar uma busca mais dinâmica e usando o IgnoreCase do próprio LINQ. O que faz o IgnoreCase? A minha explicação é a seguinte:

  1. Quando eu tenho no database o nome "Mauricio"
  2. Mas eu busco o nome "mauricio"
  3. A diferença é o maiúsculo e minúsculo
  4. Devido a esse problema, o database não retorna os valores desejados.

Problema: busca entre maiúsculo e minúsculo.

Solução: usar o IgnoreCase

Código: C#

Camada: Repository / DAO

Camada de dados: EntityFramework

O código que eu vou mostrar hoje busca por nome ou por e-mail então eu recebo dois parâmetros (string nome, string email).

A primeira linha de código busca os dados e coloca o resultado em uma variável chamada result. Depois os parâmetros são verificados para incluir na condição Where com o ToLower() depois Contains com o parâmetro nome.ToLower(), StringComparison.OrdinalIgnoreCase que ignora se é maiúsculo e minúsculo. Dessa forma, o database retorna os valores que eu preciso.

Depois eu faço o mesmo para o email e no final eu ordeno por nome e retorno a lista esperada e customizada. Veja o código 1.1.

	public List<BudgetCadastroModel> Find(string nome, string email)
	{
        try
        {
            var result = _db.BudgetCadastroDbSet.ToList();

            if (!string.IsNullOrEmpty(nome))
            {
                result = result
                	.Where(x => x.NoCadastro.ToLower().Contains(nome.ToLower(), 
                							StringComparison.OrdinalIgnoreCase))
                 .ToList();
            }

            if (!string.IsNullOrEmpty(email))
            {
                result = result
                .Where(x => x.EmailCadastro.ToLower().Contains(email.ToLower(), 
                							StringComparison.OrdinalIgnoreCase))
                .ToList();
            }

            result.OrderBy(x => x.NoCadastro);

            return result;
        }
        catch (System.Exception ex)
        {
            throw ex;
        }
    }

Código 1.1 - Busca usando o OrinalIgnoreCase

Espero ter ajudado e qualquer dúvida por entrar em contato comigo pelo site mauriciojunior.net.