private static object Compare(object leftValue, object rightValue, ConditionRelationalOperator relationalOperator)
{
#if NETFX_CORE
StringComparer comparer = StringComparer.Ordinal;
PromoteTypes(ref leftValue, ref rightValue);
string leftValueText = leftValue.ToString();
string rightValueText = rightValue.ToString();
#else
StringComparer comparer = StringComparer.InvariantCulture;
PromoteTypes(ref leftValue, ref rightValue);
var leftValueText = leftValue;
var rightValueText = rightValue;
#endif
switch (relationalOperator)
{
case ConditionRelationalOperator.Equal:
return comparer.Compare(leftValueText, rightValueText) == 0;
case ConditionRelationalOperator.NotEqual:
return comparer.Compare(leftValueText, rightValueText) != 0;
case ConditionRelationalOperator.Greater:
return comparer.Compare(leftValueText, rightValueText) > 0;
case ConditionRelationalOperator.GreaterOrEqual:
return comparer.Compare(leftValueText, rightValueText) >= 0;
case ConditionRelationalOperator.LessOrEqual:
return comparer.Compare(leftValueText, rightValueText) <= 0;
case ConditionRelationalOperator.Less:
return comparer.Compare(leftValueText, rightValueText) < 0;
default:
throw new NotSupportedException("Relational operator " + relationalOperator + " is not supported.");
}
}