Browse Source

DTO and Linq expression support added: ValueRange

HOME 2 years ago
parent
commit
6100bb6e93

+ 1 - 1
VCommon.VApplication/Dto/DateTimeRange.cs

@@ -7,4 +7,4 @@ namespace VCommon.VApplication.Dto
         public virtual DateTime? BeginTime { get; set; }
         public virtual DateTime? EndTime { get; set; }
     }
-}
+}

+ 13 - 0
VCommon.VApplication/Dto/ValueRange.cs

@@ -0,0 +1,13 @@
+namespace VCommon.VApplication.Dto
+{
+    public class ValueRange<T>
+    {
+        public bool Include { get; set; }
+        public T? Min { get; set; }
+        public T? Max { get; set; }
+    }
+
+    public class ValueRange : ValueRange<int>
+    {
+    }
+}

+ 6 - 0
VCommon.VApplication/Linq.Expressions/PredicateExpressionBuilderExtensionMethods.cs

@@ -14,6 +14,12 @@ namespace VCommon.VApplication.Linq.Expressions
                 : me.Between(selector, filter.BeginTime, filter.EndTime);
         }
 
+        public static PredicateWrap<T> ValueBetween<T,TV>(this PredicateBuilder<T> me, Expression<Func<T, TV>> selector, ValueRange<TV> filter) where TV :struct
+        {
+            return null == filter ? null
+                : me.Between(selector, filter.Min, filter.Max,filter.Include);
+        }
+
         public static PredicateWrap<T> FilterByEnable<T>(this PredicateBuilder<T> me, IPassiveFilter filter) where T : IPassive
         {
             return true != filter?.IsEnable.HasValue ? null