Current comparison logic handles nulls in the following way:
if a=null then "a==null" return true
if a not null then "a>null" returns true
In some cases SQL-like behavior is desired when any comparison with null returns false.
For this purpose
lets enhance API to add ability to specify custom comparer
add "NullBehaviour" property to ValueComparer implementation. By default current logic is preserved ("MinValue") and lets add "Sql" option that returns false if any operand is null.
ValueComparer now is a public class and can be created outside
ValueComparer was enhanced with options: FormatProvider (used for Convert.ChangeType), SuppressErrors (allows to compare non-compatible types without exception), NullComparison (determines how to compare with nulls)
compiled expression cache becomes instance-specific (was static and shared across all LambdaParser instances): now compiled expression depends on the ValueComparer and global cache is irrelevant.
Current comparison logic handles nulls in the following way:
In some cases SQL-like behavior is desired when any comparison with null returns false. For this purpose