예제 #1
0
        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(" ) ");
        }
예제 #2
0
		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;
 }
예제 #4
0
        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;
        }