protected virtual void EmitIn(NPathInExpression inExpression) { EmitExpression(inExpression.TestExpression); Write(" in ( "); // do not localize foreach (IValue expression in inExpression.Values) { EmitExpression(expression); if (expression != inExpression.Values[inExpression.Values.Count - 1]) Write(","); } Write(" ) "); }
private SqlExpression EvalIn(NPathInExpression inExpression) { SqlSearchCondition search ; if (noNext) search = conditionChainOwner as SqlSearchCondition ; else search = conditionChainOwner.GetNextSqlSearchCondition() ; noNext = false; SqlExpression leftExpression = EvalExpression(inExpression.TestExpression ); SqlInPredicate predicate = search.GetSqlInPredicate(leftExpression) ; foreach (IValue expression in inExpression.Values) predicate.AddSqlInPredicateItem(EvalExpression(expression)); return predicate; }
protected virtual bool EvalInExpression(object item, NPathInExpression inExpression) { object testValue = EvalValue(item, inExpression.TestExpression); foreach (object expression in inExpression.Values) { object value = EvalValue(item, expression); int res = Comparer.Default.Compare(testValue, value); if (res == 0) return true; } return false; }
private IValue ParseInExpression(IValue leftOperand) { NPathInExpression inExpression = new NPathInExpression(); inExpression.TestExpression = leftOperand; tokenizer.GetCurrentToken("in", "in"); tokenizer.MoveNext(); tokenizer.GetCurrentToken("(", "("); do { tokenizer.MoveNext(); IValue expression = ParseExpression(); inExpression.Values.Add(expression); } while (tokenizer.GetCurrentToken().IsType("comma")); tokenizer.GetCurrentToken(")", ")"); tokenizer.MoveNext(); return inExpression; }