public override int CompareValueTo(int recordNo1, object value)
{
if (DBNull.Value == value)
{
// it is not meaningful compare UDT with DBNull.Value
value = _nullValue;
}
if (_implementsIComparable)
{
IComparable comparable = (IComparable)_values[recordNo1];
return comparable.CompareTo(value);
}
else if (_nullValue == value)
{
INullable nullableValue = (INullable)_values[recordNo1];
return nullableValue.IsNull ? 0 : 1; // left may be null, right is null
}
throw ExceptionBuilder.IComparableNotImplemented(_dataType.AssemblyQualifiedName);
}