private static BinaryExpression GetComparisonOperator(ExpressionType binaryType, string opName, Expression left, Expression right, bool liftToNull)
{
if (left.Type == right.Type && left.Type.IsNumeric())
{
if (left.Type.IsNullableType() && liftToNull)
{
return new SimpleBinaryExpression(binaryType, left, right, typeof(bool?));
}
else
{
return new LogicalBinaryExpression(binaryType, left, right);
}
}
return GetUserDefinedBinaryOperatorOrThrow(binaryType, opName, left, right, liftToNull);
}