예제 #1
0
        protected override List <TplResult> InnerProcess(List <TplResult> input)
        {
            for (int i = 0; i < input.Count; i++)
            {
                var allVarsSet = true;

                //Set the variables in our condition to what we have in this TplResult
                foreach (var varName in _condition.VarNames)
                {
                    var value = input[i].ValueOf(varName);

                    if (value == null)
                    {
                        allVarsSet = false;
                    }

                    else
                    {
                        _condition.SetVariableValue(varName, value);
                    }
                }

                //Evaluate the condition. If it is false or contains null variables, remove this TplResult
                if (!allVarsSet || !_condition.EvalAsBool())
                {
                    input.RemoveAt(i);
                    i--;
                }

                _condition.ClearAllVariables();
            }

            return(input);
        }
예제 #2
0
        protected override List <TplResult> InnerProcess(List <TplResult> input)
        {
            Parallel.ForEach(input, result =>
            {
                _evaluation.ClearAllVariables();

                foreach (var varName in _evaluation.VarNames)
                {
                    var value = result.ValueOf(varName);

                    if (value == null)
                    {
                        return;
                    }

                    _evaluation.SetVariableValue(varName, value);
                }

                result.AddOrUpdateField(NewFieldName, _evaluation.Eval());
            });

            return(input);
        }