public Subtract ( HqlExpression lhs, HqlExpression rhs ) : HqlSubtract | ||
lhs | HqlExpression | |
rhs | HqlExpression | |
return | HqlSubtract |
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { HqlMethodCall locate; if (arguments.Count == 1) { locate = treeBuilder.MethodCall("locate", visitor.Visit(arguments[0]).AsExpression(), visitor.Visit(targetObject).AsExpression()); //, //treeBuilder.Constant(0)); } else { var start = treeBuilder.Add(visitor.Visit(arguments[1]).AsExpression(), treeBuilder.Constant(1)); locate = treeBuilder.MethodCall("locate", visitor.Visit(arguments[0]).AsExpression(), visitor.Visit(targetObject).AsExpression(), start); } return treeBuilder.Subtract(locate,treeBuilder.Constant(1)); }
public override HqlTreeNode BuildHql(MethodInfo method, Expression targetObject, ReadOnlyCollection<Expression> arguments, HqlTreeBuilder treeBuilder, IHqlExpressionVisitor visitor) { var length = arguments.Count == 1 ? treeBuilder.Subtract(treeBuilder.MethodCall("length", visitor.Visit(targetObject).AsExpression()), visitor.Visit(arguments[0]).AsExpression()) : visitor.Visit(arguments[1]).AsExpression(); return treeBuilder.MethodCall("substring", visitor.Visit(targetObject).AsExpression(), treeBuilder.Add(visitor.Visit(arguments[0]).AsExpression(), treeBuilder.Constant(1)), length); }