BigML.Model.Predicate.Expression C# (CSharp) Method

Expression() private method

private Expression ( LinqExpr.ParameterExpression>.Dictionary parameters ) : Expression
parameters LinqExpr.ParameterExpression>.Dictionary
return System.Linq.Expressions.Expression
            internal LinqExpr.Expression Expression(Dictionary<string, LinqExpr.ParameterExpression> parameters)
            {
                if (IsSimple)
                {
                    return LinqExpr.Expression.Constant(Constant);
                }
                var value = default(double);
                var x = Value as object;
                var fieldType = "null";

                try {
                    if (Double.TryParse(Value, out value)) x = value;

                    fieldType = parameters[Field].Type.Name.ToLower();
                } catch { // Exception ex) {
                    x = 0.0;
                    //Console.Out.WriteLine("UnkownType?" + ex.ToString());
                }

                switch (Operator)
                {
                    case ">":
                    case ">*":
                        return LinqExpr.Expression.GreaterThan(parameters[Field],
                                                                        LinqExpr.Expression.
                                                                             Constant(x));
                    case ">=":
                    case ">=*":
                        return LinqExpr.Expression.GreaterThanOrEqual(parameters[Field],
                                                                        LinqExpr.Expression.
                                                                             Constant(x));
                    case "<>":
                    case "!=":
                    case "!=*":
                        if (fieldType == "string")
                        {
                            return LinqExpr.Expression.NotEqual(parameters[Field],
                                                                        LinqExpr.Expression.
                                                                            Constant(Value));
                        }
                        else
                        {
                            return LinqExpr.Expression.NotEqual(parameters[Field],
                                                                        LinqExpr.Expression.
                                                                            Constant(x));
                        }

                    case "<":
                    case "<*":
                        return LinqExpr.Expression.LessThan(parameters[Field],
                                                                        LinqExpr.Expression.
                                                                            Constant(Value));
                    case "<=":
                    case "<=*":
                        return LinqExpr.Expression.LessThanOrEqual(parameters[Field],
                                                                        LinqExpr.Expression.
                                                                            Constant(x));
                    case "=":
                    case "=*":
                        if (fieldType == "string")
                        {
                            return LinqExpr.Expression.Equal(parameters[Field],
                                                                        LinqExpr.Expression.
                                                                            Constant(Value));
                        }
                        else
                        {
                            return LinqExpr.Expression.Equal(parameters[Field],
                                                                        LinqExpr.Expression.
                                                                            Constant(x));
                        }

                    default:
                        throw new Exception("Unknown operator '" + Operator + "'");
                }
            }