Пример #1
0
        private List <T> Filtrar <T>(FiltroOperadorCondicional filtro, IEnumerable <T> entidadeSet)
        {
            PropertyInfo info = typeof(T).GetProperty(filtro.Campo);

            return(entidadeSet
                   .Select(item => new
            {
                value = item,
                prop = info.GetValue(item),
            })
                   .Where(item => filtro.ValorFiltro01 == null
                                 ? item.prop == null
                                 : item.prop != null && AplicarOperadorCondicional(filtro, item.prop.ToString()))
                   .Select(item => item.value)
                   .ToList());
        }
Пример #2
0
        private bool AplicarOperadorCondicional(FiltroOperadorCondicional filtro, string valorEntidade)
        {
            var valorFiltro = filtro.ValorFiltro01;
            var operador    = filtro.OperadorCondicional;

            if (filtro.CampoData)
            {
                var dtInicio   = DateTime.Parse(filtro.ValorFiltro01);
                var dtFinal    = DateTime.Parse(filtro.ValorFiltro02);
                var dtEntidade = DateTime.Parse(valorEntidade);

                return(dtEntidade.Date >= dtInicio.Date &&
                       dtEntidade.Date <= dtFinal.Date);
            }

            if (!EhNumero(valorFiltro, valorEntidade) &&
                operador != OperadorCondicional.IgualA &&
                operador != OperadorCondicional.DiferenteDe)
            {
                return(false);
            }

            switch (operador)
            {
            case OperadorCondicional.IgualA:
                return(string.Equals(valorFiltro, valorEntidade));

            case OperadorCondicional.DiferenteDe:
                return(!string.Equals(valorFiltro, valorEntidade));

            case OperadorCondicional.MaiorOuIgualA:
                return(double.Parse(valorEntidade) >= double.Parse(valorFiltro));

            case OperadorCondicional.MaiorQue:
                return(double.Parse(valorEntidade) > double.Parse(valorFiltro));

            case OperadorCondicional.MenorOuIgualA:
                return(double.Parse(valorEntidade) <= double.Parse(valorFiltro));

            case OperadorCondicional.MenorQue:
                return(double.Parse(valorEntidade) < double.Parse(valorFiltro));
            }

            return(false);
        }