internal RangeCriteria(IRange range, RangePolicy policy) { if (range.LowerSpecified) { _lower = new CompareCriteria(range.GetLowerBound(policy), ComparisonOperator.GreaterThanOrEqual); } if (range.UpperSpecified) { _upper = new CompareCriteria(range.GetUpperBound(policy), ComparisonOperator.LessThanOrEqual); } }
public static RangeCriteria Between <T>(T?lower, T?upper, RangePolicy policy = RangePolicy.Fill) where T : struct, IComparable { if (lower != null && upper != null) { if (lower.Value.CompareTo(upper.Value) > 0) { T?temp = upper; upper = lower; lower = temp; } } return(new RangeCriteria(new ValueRange <T>(lower, upper), policy)); }
IComparable IRange.GetUpperBound(RangePolicy policy) { if (_upper != null) { if (policy == RangePolicy.Fill) { return(_upper.Value.Date.AddDays(1).AddSeconds(-1)); } else { return(_upper); } } else { return(null); } }
IComparable IRange.GetLowerBound(RangePolicy policy) { if (_lower != null) { if (policy == RangePolicy.Fill) { return(_lower.Value.Date); } else { return(_lower.Value); } } else { return(null); } }
public RangePolicyAttribute(RangePolicy policy) { Policy = policy; }
IComparable IRange.GetLowerBound(RangePolicy policy) => _lower;
IComparable IRange.GetUpperBound(RangePolicy policy) => _upper;
public static RangeCriteria Between(IRange range, RangePolicy policy) { return(new RangeCriteria(range, policy)); }