private IClause ParseExact(BinaryExpression expression, ClauseContext context) { var left = _lookup.Parse(expression.Left, context); var right = _lookup.Lookup(expression.Right).Parse(expression.Right, context); var op = _lookup.Parse(expression.NodeType, left, right); var clause = new MutableClause(op) .WrapParentheses(); return(clause); }
public IClause Parse(Expression expression, ClauseContext context) { var value = (expression as ConstantExpression).Value; if (context == ClauseContext.Select) { return(new Clause(value.ToString())); } var param = Parameter.CreateNew(value); return(new Clause(param.Name, param)); }
public IClause ParseExact(MethodCallExpression expression, ClauseContext context) { var functionName = _funcResolver.Resolve(expression.Method); var argClause = new SeparatedClause(",".ToClause()); foreach (var arg in expression.Arguments) { argClause.AppendSeparated(_lookup.Parse(arg, context)); } var clause = new MutableClause(argClause).WrapParentheses().PrependText(functionName); return(clause); }
private IClause ParseExact(BinaryExpression binaryExpression, ClauseContext context) { Expression other; if (binaryExpression.Left is ConstantExpression) { other = binaryExpression.Right; } else { other = binaryExpression.Left; } var nullCheck = binaryExpression.NodeType == Equal ? " IS NULL" : " IS NOT NULL"; var otherClause = _lookup.Parse(other, context); var clause = new MutableClause().Append(otherClause).AppendText(nullCheck).WrapParentheses(); return clause; }
public LambdaClause Expression(LambdaExpression expression, ClauseContext context) { _clause = _parser.Parse(expression, context); return(this); }
public IClause Parse(Expression expression, ClauseContext context) { return(ParseExact(expression as BinaryExpression, context)); }
public IClause Parse(Expression expression, ClauseContext context) { var parser = Lookup(expression); return(parser.Parse(expression, context)); }
public IClause Parse(Expression expression, ClauseContext context) { return(ParseExact(expression as MemberExpression)); }
public IClause Parse(Expression expression, ClauseContext context) { return(ParseExact((MethodCallExpression)expression, context)); }
public IClause Parse(UnaryExpression expression, ClauseContext context) { return(_lookup.Parse(expression.Operand, context)); }
IClause IExpressionParser.Parse(Expression expression, ClauseContext context) { return(Parse(expression as UnaryExpression, context)); }
public IClause Parse(LambdaExpression expression, ClauseContext context) { return(_lookup.Parse(expression.Body, context)); }