public override VfpExpression Visit(VfpIsEmptyExpression expression) { Write(" NOT EXISTS ("); expression.Argument.Accept(this); Write(")"); return(expression); }
private static bool GetInnerProjectionExpression(VfpProjectExpression expression, out VfpProjectExpression innerProjectionExpression, out bool hasNotExpression) { innerProjectionExpression = null; hasNotExpression = false; if (!expression.Input.VariableName.StartsWith("SingleRowTable")) { return(false); } var newInstanceExpression = expression.Projection as VfpNewInstanceExpression; if (newInstanceExpression == null) { return(false); } var notExpression = newInstanceExpression.Arguments[0] as VfpNotExpression; VfpIsEmptyExpression isEmptyExpression = null; if (notExpression == null) { isEmptyExpression = newInstanceExpression.Arguments[0] as VfpIsEmptyExpression; } else { isEmptyExpression = notExpression.Argument as VfpIsEmptyExpression; hasNotExpression = true; } if (isEmptyExpression == null) { return(false); } innerProjectionExpression = isEmptyExpression.Argument as VfpProjectExpression; return(innerProjectionExpression != null); }
public virtual VfpExpression Visit(VfpIsEmptyExpression expression) { return(new VfpIsEmptyExpression(expression.ResultType, expression.Argument.Accept(this))); }