///<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); }
///<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); }