Пример #1
0
        ///<summary>
        ///普通数据过滤
        ///</summary>
        ///<typeparam name="T"></typeparam>
        ///<param name="source"></param>
        ///<param name="item"></param>
        ///<param name="p"></param>
        ///<retums></retums>
        private static IQueryable <T> OrdinaryDataFilter <T>(IQueryable <T> source, DataFilterModel item, PropertyInfo p)
        {
            //var selectvalue = Convert.
            //          ChangeType(item.value, p.PropertyType);
            var option = (DataFliterOperatorTypeEnum)
                         Enum.Parse(typeof(DataFliterOperatorTypeEnum), item.op);

            switch (option)
            {
            case DataFliterOperatorTypeEnum.contains:
            {
                /* 包含, 目前只支持字符串 */
                source = ExpressionOperate(StringContains, source, p, item.value);
                break;
            }

            case DataFliterOperatorTypeEnum.equal:
            {
                /* 等于 */
                source = ExpressionOperate(Expression.Equal, source, p, item.value);
                break;
            }

            case DataFliterOperatorTypeEnum.greater:
            {
                /* 大于 */
                source = ExpressionOperate(Expression.GreaterThan, source, p, item.value);
                break;
            }

            case DataFliterOperatorTypeEnum.greaterorequal:
            {
                /* 大于等于 */
                source =
                    ExpressionOperate(Expression.GreaterThanOrEqual, source, p, item.value);
                break;
            }

            case DataFliterOperatorTypeEnum.less:
            {
                /* 小于 */
                source = ExpressionOperate(Expression.LessThan, source, p, item.value);
                break;
            }

            case DataFliterOperatorTypeEnum.lessorequal:
            {
                /* 小于等于 */
                source = ExpressionOperate(Expression.LessThanOrEqual, source, p, item.value);
                break;
            }

            default: break;
            }
            return(source);
        }
Пример #2
0
        ///<summary>
        ///时间过滤
        ///</summary>
        ///<typeparam name="T"></typeparam>
        ///<param name="source"></param>
        ///<param name="item"></param>
        ///<param name="p"></param>
        ///<returns></returns>
        public static IQueryable <T> DateDataFilter <T>(IQueryable <T> source, DataFilterModel item, PropertyInfo p)
        {
            var selectDate = Convert.ToDateTime(item.value);
            var option     = (DataFliterOperatorTypeEnum)
                             Enum.Parse(typeof(DataFliterOperatorTypeEnum), item.op);

            switch (option)
            {
            case DataFliterOperatorTypeEnum.equal:
            {
                //大于0时
                source = ExpressionOperate(Expression.GreaterThanOrEqual, source, p, selectDate);
                //小于后一天
                var nextDate = selectDate.AddDays(1);
                source = ExpressionOperate(Expression.LessThan, source, p, nextDate);
                break;
            }

            case DataFliterOperatorTypeEnum.greater:
            {
                //大于等于后一天
                selectDate = selectDate.AddDays(1);
                source     = ExpressionOperate(Expression.GreaterThanOrEqual, source, p, selectDate);
                break;
            }

            case DataFliterOperatorTypeEnum.greaterorequal:
            {
                //大于等于当天
                source = ExpressionOperate(Expression.GreaterThanOrEqual, source, p, selectDate);
                break;
            }

            case DataFliterOperatorTypeEnum.less:
            {
                //小于当天
                source = ExpressionOperate(Expression.LessThan, source, p, selectDate);
                break;
            }

            case DataFliterOperatorTypeEnum.lessorequal:
            {
                //小于第二天
                selectDate = selectDate.AddDays(1);
                source     = ExpressionOperate(Expression.LessThan, source, p, selectDate);
                break;
            }

            default: break;
            }
            return(source);
        }