/// <summary>Veja AbrirGrupo()</summary> public Filtros FecharGrupo(FiltrosOperador operador = FiltrosOperador.And) { RemoverOperadorDoFinal(); sbFiltros.Append(")"); AdicionarOperador(operador); sbFiltros.Append("\n"); return(this); }
// adiciona um operador, uso interno private void AdicionarOperador(FiltrosOperador operador) { switch (operador) { case FiltrosOperador.And: sbFiltros.Append(" and"); break; case FiltrosOperador.Or: sbFiltros.Append(" or"); break; } }
/// <summary> /// Veja o outro overload para descrição e exemplo de uso. /// </summary> protected Filtros Add(string campo, FiltroExpressao expressao, object valorInicial, string prefixoCampo = "", object valorFinal = null, FiltrosOperador operador = FiltrosOperador.And) { Filtro filtro = new Filtro(campo, expressao, valorInicial, valorFinal, prefixoCampo); sbFiltros.Append(filtro.ToString()); AdicionarOperador(operador); return(this); }
/// <summary> /// adiciona um filtro usando esquema de LIKE /// Pessoa p = new Pessoa(); /// Filtros f = new Filtros(); /// f.AddLike(() => p.Nome, p, "M"); /// </summary> /// <param name="exp">Propridade em formato expressão Lambda (() => x.Nome)</param> /// <param name="obj">Instância do objeto que contém a propriedade do primeiro parâmetro (ex: p)</param> /// <param name="conteudoFiltro">Valor para o filtro ("Maria")</param> /// <param name="operador">FiltroOperador.And ou FiltroOperador.Or</param> public Filtros AddLike <T>(Expression <Func <T> > exp, string conteudoFiltro, string prefixoCampo = "", FiltrosOperador operador = FiltrosOperador.And) { string campo = Auxiliar.GetFieldName(exp, objetoModel); sbFiltros.Append(SqlUtil.MontarLike(prefixoCampo + campo, conteudoFiltro)); AdicionarOperador(operador); return(this); }
/// <summary> /// adiciona um filtro com between para usar com select, use toString para pegar o filtro completo /// para os parâmetros abaixo, tenha por exemplo: /// Pessoa p = new Pessoa(); /// Filtros f = new Filtros(p); /// f.AddEntre(() => p.Valor, 1, 20); /// </summary> /// <param name="exp">Propridade em formato expressão Lambda (() => x.Nome)</param> /// <param name="valorInicial">Valor inicial para o filtro (numeros ou datas)</param> /// <param name="valorFinal">Valor inicial para o filtro (numeros ou datas)</param> /// <param name="prefixoCampo">quando é um join que campo repete em mais tabelas coloque um prefixo</param> /// <param name="operador">FiltroOperador.And ou FiltroOperador.Or - apenas para se usar mais de um filtro</param> public Filtros AddEntre <T>(Expression <Func <T> > exp, object valorInicial, object valorFinal, string prefixoCampo = "", FiltrosOperador operador = FiltrosOperador.And) { string campo = Auxiliar.GetFieldName(exp, objetoModel); this.Add(campo, FiltroExpressao.Entre, valorInicial, prefixoCampo, valorFinal, operador); return(this); }
/// <summary> /// adiciona um filtro para usar com select, use toString para pegar o filtro completo /// para os parâmetros abaixo, tenha por exemplo: /// Pessoa p = new Pessoa(); /// Filtros f = new Filtros(p); /// f.Add(() => p.Nome, FiltroExpressao.ComecaCom, "M"); /// </summary> /// <param name="exp">Propridade em formato expressão Lambda (() => x.Nome)</param> /// <param name="conteudoFiltro">Valor para o filtro (100, "Maria", etc)</param> /// <param name="expressao">FiltroExpressao.*</param> /// <param name="prefixoCampo">quando é um join que campo repete em mais tabelas coloque um prefixo</param> /// <param name="operador">FiltroOperador.And ou FiltroOperador.Or - apenas para se usar mais de um filtro</param> public Filtros Add <T>(Expression <Func <T> > exp, object conteudoFiltro, FiltroExpressao expressao = FiltroExpressao.Igual, string prefixoCampo = "", FiltrosOperador operador = FiltrosOperador.And) { string campo = Auxiliar.GetFieldName(exp, objetoModel); this.Add(campo, expressao, conteudoFiltro, prefixoCampo, null, operador); return(this); }