public static WhereOperation ParseWhereOperation(TextualOperation operation, string op)
        {
            switch (op)
            {
            case "*":
                return(WhereOperation.Any);

            case "CONTAINS":
                return(WhereOperation.Contains);

            case "=":
                return(WhereOperation.Equal);

            case ">":
                return(WhereOperation.GreaterThan);

            case ">=":
                return(WhereOperation.GreaterThanOrEqual);

            case "<":
                return(WhereOperation.LesserThan);

            case "<=":
                return(WhereOperation.LesserThanOrEqual);

            case "!=":
                return(WhereOperation.NotEqual);

            default:
                throw new UnknownWhereOperationException(operation, op);
            }
        }
        public bool Check(TextualOperation op, TextualRow row)
        {
            var val = row.GetValue(Column);

            if (WhereOperation != WhereOperation.Equal && WhereOperation != WhereOperation.NotEqual &&
                WhereOperation != WhereOperation.Any && WhereOperation != WhereOperation.Contains)
            {
                try
                {
                    val   = Convert.ToDouble(val);
                    Value = Convert.ToDouble(Value);
                }
                catch
                {
                    throw new IncorrectValueFormatException(op, row.ParentTable);
                }
            }

            switch (WhereOperation)
            {
            case WhereOperation.Any:
                return(true);

            case WhereOperation.Contains:
                return(val.ToString().Contains(Value.ToString()));

            case WhereOperation.Equal:
                return(val.ToString() == Value.ToString());

            case WhereOperation.GreaterThan:
                return((double)val > (double)Value);

            case WhereOperation.GreaterThanOrEqual:
                return((double)val >= (double)Value);

            case WhereOperation.LesserThan:
                return((double)val < (double)Value);

            case WhereOperation.LesserThanOrEqual:
                return((double)val <= (double)Value);

            case WhereOperation.NotEqual:
                return(val.ToString() != Value.ToString());

            default:
                throw new UnknownWhereOperationException(op, (int)WhereOperation);
            }
        }