Greater Than Or Equal

Feature Is supported
Null safe
Validation
EF Core
EF 6
External Comparer

Validation result

Error

"Object is lower than [{GreaterThan}]".

"Object is greater than or equal to [{GreaterThan}]" - for negation.

Parameters

Parameter Description
GreaterThanLimit passed in constructor.

Info

Checks if candidate object is greater than or equal to expected value.

Specification for comparison use (in order):

  1. IComparer<T> - if available.
  2. >= operator - if defined for T.
  3. CompareTo() method - if T implements IComparable<T>.
  4. CompareTo(Object) method - if T implements IComparable.

Note that, null is always the lowest value.

Usage

var spec = Specification.GreaterThanOrEqual<double?>(1.45);

spec.IsSatisfiedBy(1.43);  // false
spec.IsSatisfiedBy(5.0);    // true
spec.IsSatisfiedBy(null);    // false

As property

var customerSpec = Specification.GreaterThanOrEqual<Customer, int>(
    c => c.CustomerId, 100);

customerSpec.IsSatisfiedBy(new Customer { CustomerId = 1 }); // false
customerSpec.IsSatisfiedBy(new Customer { CustomerId = 100 }); // true

Not Greater Than Or Equal

var spec = Specification.NotGreaterThanOrEqual<double?>(1.45);

spec.IsSatisfiedBy(1.43);  // true
spec.IsSatisfiedBy(5.0);    // false
spec.IsSatisfiedBy(null);    // true

As property

var customerSpec = Specification.NotGreaterThanOrEqual<Customer, int>(
    c => c.CustomerId, 100);

customerSpec.IsSatisfiedBy(new Customer { CustomerId = 1 }); // true
customerSpec.IsSatisfiedBy(new Customer { CustomerId = 100 }); // true

Comparer

GreaterThanOrEqualSpecification<T> supports IComparer<T>.

var spec = Specification.GreaterThanOrEqual<double>(
    0.0045, Comparer<double>.Default);

EF 6 support

GreaterThanOrEqualSpecification<T> works correctly in EF 6 solution, when T is primitive or enum type.
Non primitive types, may generate NotSupportedException.

GitHub