private static bool IsPredicateArrayCorrect(byte[] left, byte[] right, SqlComparisonBooleanExpressionType comparisonOperator) { if (comparisonOperator != SqlComparisonBooleanExpressionType.Equals && comparisonOperator != SqlComparisonBooleanExpressionType.NotEqual) { throw new NotImplementedException( ); } var equals = left.SequenceEqual(right); return(comparisonOperator == SqlComparisonBooleanExpressionType.Equals && equals); }
public static bool IsPredicateCorrect(object left, object right, SqlComparisonBooleanExpressionType comparisonOperator) { if (left == null && right == null) { return(true); } if (left == null || right == null) { return(false); } if (left.GetType( ) == typeof(byte[]) && right.GetType( ) == typeof(byte[])) { return(IsPredicateArrayCorrect((byte[])left, (byte[])right, comparisonOperator)); } if (left is IComparable == false || right is IComparable == false) { return(false); } var comparison = (( IComparable )left).CompareTo(( IComparable )right); switch (comparisonOperator) { case SqlComparisonBooleanExpressionType.Equals: return(comparison == 0); case SqlComparisonBooleanExpressionType.LessThan: return(comparison < 0); case SqlComparisonBooleanExpressionType.ValueEqual: return(comparison == 0); case SqlComparisonBooleanExpressionType.NotEqual: return(comparison != 0); case SqlComparisonBooleanExpressionType.GreaterThan: return(comparison > 0); case SqlComparisonBooleanExpressionType.GreaterThanOrEqual: return(comparison >= 0); case SqlComparisonBooleanExpressionType.LessOrGreaterThan: return(comparison != 0); case SqlComparisonBooleanExpressionType.LessThanOrEqual: return(comparison <= 0); case SqlComparisonBooleanExpressionType.NotLessThan: return(comparison >= 0); case SqlComparisonBooleanExpressionType.NotGreaterThan: return(comparison <= 0); default: throw new NotImplementedException(); } }