LINQ usando IgnoreCase

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.