Esempio n. 1
0
        internal static IEnumerable <LogicalItem> Convert(ExpressionTreeBase item)
        {
            JoiningType?          type;
            bool                  negate;
            ConditionalExpression lastParent;

            ExpressionTreeBase actualItem = ExtractItem(item, out type, out negate, out lastParent);

            LogicalItem result;

            if (actualItem is SelectorExpression)
            {
                result = new LogicalSelector((SelectorExpression)actualItem);
            }
            else if (actualItem is ConditionGroup)
            {
                result = new LogicalGroup((ConditionGroup)actualItem);
            }
            else
            {
                throw new Exception();
            }

            result.Negated     = negate;
            result.JoiningType = type ?? JoiningType.And;

            yield return(result);

            if (lastParent != null)
            {
                foreach (LogicalItem current in lastParent.AdditionalConditions.SelectMany(x => Convert(x)))
                {
                    yield return(current);
                }
            }
        }
Esempio n. 2
0
        internal static IEnumerable<LogicalItem> Convert(ExpressionTreeBase item)
        {
            JoiningType? type;
            bool negate;
            ConditionalExpression lastParent;

            ExpressionTreeBase actualItem = ExtractItem(item, out type, out negate, out lastParent);

            LogicalItem result;

            if (actualItem is SelectorExpression)
            {
                result = new LogicalSelector((SelectorExpression)actualItem);
            }
            else if (actualItem is ConditionGroup)
            {
                result = new LogicalGroup((ConditionGroup)actualItem);
            }
            else
            {
                throw new Exception();
            }

            result.Negated = negate;
            result.JoiningType = type ?? JoiningType.And;

            yield return result;

            if (lastParent != null)
            {
                foreach (LogicalItem current in lastParent.AdditionalConditions.SelectMany(x => Convert(x)))
                {
                    yield return current;
                }
            }
        }