private static void Equals(MethodCallExpression expression, SqlBuilder sqlBuilder) { if (expression.Object != null) { Expression2SqlProvider.Where(expression.Object, sqlBuilder); } sqlBuilder += " ="; Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder); }
private static void Contains(MethodCallExpression expression, SqlBuilder sqlBuilder) { if (expression.Object != null) { Expression2SqlProvider.Where(expression.Object, sqlBuilder); } sqlBuilder += " like '%'+"; Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder); sqlBuilder += " +'%'"; }
private static void EndsWith(MethodCallExpression expression, SqlBuilder sqlBuilder) { if (expression.Object != null) { Expression2SqlProvider.Where(expression.Object, sqlBuilder); } sqlBuilder.AllowAppendEmpty = false; sqlBuilder += " like '%' +"; Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder); sqlBuilder.AllowAppendEmpty = true; }
private static void LikeRight(MethodCallExpression expression, SqlBuilder sqlBuilder) { if (expression.Object != null) { Expression2SqlProvider.Where(expression.Object, sqlBuilder); } Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder); sqlBuilder += " like "; Expression2SqlProvider.Where(expression.Arguments[1], sqlBuilder); sqlBuilder += " + '%'"; }
public ExpressionToSql <T> Where(Expression <Func <T, bool> > expression) { if (expression == null) { throw new ArgumentNullException("expression", "Value cannot be null"); } if (expression.Body != null && expression.Body.NodeType == ExpressionType.Constant) { throw new ArgumentException("Cannot be parse expression", "expression"); } this._sqlBuilder += "\nwhere"; Expression2SqlProvider.Where(expression.Body, this._sqlBuilder); return(this); }
protected override SqlBuilder Where(BinaryExpression expression, SqlBuilder sqlBuilder) { if (IsNeedsParentheses(expression, expression.Left)) { sqlBuilder += "("; Expression2SqlProvider.Where(expression.Left, sqlBuilder); sqlBuilder += ")"; } else { Expression2SqlProvider.Where(expression.Left, sqlBuilder); } int signIndex = sqlBuilder.Length; if (IsNeedsParentheses(expression, expression.Right)) { sqlBuilder += "("; Expression2SqlProvider.Where(expression.Right, sqlBuilder); sqlBuilder += ")"; } else { Expression2SqlProvider.Where(expression.Right, sqlBuilder); } int sqlLength = sqlBuilder.Length; if (sqlLength - signIndex == 5 && sqlBuilder.ToString().EndsWith("null")) { OperatorParser(expression.NodeType, signIndex, sqlBuilder, true); } else { OperatorParser(expression.NodeType, signIndex, sqlBuilder); } return(sqlBuilder); }
protected override SqlBuilder Where(UnaryExpression expression, SqlBuilder sqlBuilder) { Expression2SqlProvider.Where(expression.Operand, sqlBuilder); return(sqlBuilder); }
protected override SqlBuilder Where(ParameterExpression expression, SqlBuilder sqlBuilder) { Expression2SqlProvider.Where(expression, sqlBuilder); return(sqlBuilder); }
private static void InnerIn(MethodCallExpression expression, SqlBuilder sqlBuilder) { Expression2SqlProvider.Where(expression.Arguments[0], sqlBuilder); sqlBuilder += " in"; Expression2SqlProvider.In(expression.Arguments[1], sqlBuilder); }