Example #1
0
 public ILeftHandSide Where(params Expression <Func <TCollection, bool> >[] conditions)
 {
     foreach (var condition in conditions)
     {
         var rewriter           = new ConditionRewriter(_patternBuilder.Declaration, _patternBuilder.Declarations);
         var rewrittenCondition = rewriter.Rewrite(condition);
         _patternBuilder.Condition(rewrittenCondition);
     }
     return(Builder);
 }
        private ILeftHandSide Match <T>(ParameterExpression symbol, IEnumerable <Expression <Func <T, bool> > > conditions)
        {
            var groupBuilder   = _groupBuilders.Current;
            var patternBuilder = groupBuilder.Pattern(symbol.Type, symbol.Name);

            foreach (var condition in conditions)
            {
                var rewriter           = new ConditionRewriter(patternBuilder.Declaration, groupBuilder.Declarations);
                var rewrittenCondition = rewriter.Rewrite(condition);
                patternBuilder.Condition(rewrittenCondition);
            }
            return(this);
        }
        public ILeftHandSide Not <T>(params Expression <Func <T, bool> >[] conditions)
        {
            var groupBuilder = _groupBuilders.Current;
            var notBuilder   = groupBuilder.Not();

            var patternBuilder = notBuilder.Pattern(typeof(T));

            foreach (var condition in conditions)
            {
                var rewriter           = new ConditionRewriter(patternBuilder.Declaration, groupBuilder.Declarations);
                var rewrittenCondition = rewriter.Rewrite(condition);
                patternBuilder.Condition(rewrittenCondition);
            }
            return(this);
        }
Example #4
0
        public ILeftHandSide Not <T>(params Expression <Func <T, bool> >[] conditions)
        {
            var leftHandSide = _builder.LeftHandSide();

            var notBuilder = leftHandSide.Group(GroupType.Not);

            var patternBuilder = notBuilder.Pattern(typeof(T));

            foreach (var condition in conditions)
            {
                var rewriter           = new ConditionRewriter(leftHandSide.Declarations);
                var rewrittenCondition = rewriter.Rewrite(patternBuilder.Declaration, condition);
                patternBuilder.Condition(rewrittenCondition);
            }
            return(this);
        }
        public ICollectPattern <IEnumerable <T> > Collect <T>(Expression <Func <IEnumerable <T> > > alias, params Expression <Func <T, bool> >[] itemConditions)
        {
            var collectionSymbol = ExtractSymbol(alias);
            var groupBuilder     = _groupBuilders.Current;

            var outerPatternBuilder = groupBuilder.Pattern(collectionSymbol.Type, collectionSymbol.Name);

            var aggregateBuilder = outerPatternBuilder.Aggregate();

            aggregateBuilder.CollectionOf(typeof(T));

            var patternBuilder = aggregateBuilder.Pattern(typeof(T));

            foreach (var condition in itemConditions)
            {
                var rewriter           = new ConditionRewriter(patternBuilder.Declaration, groupBuilder.Declarations);
                var rewrittenCondition = rewriter.Rewrite(condition);
                patternBuilder.Condition(rewrittenCondition);
            }
            return(new CollectExpressionBuilder <IEnumerable <T> >(this, outerPatternBuilder));
        }
        private ILeftHandSide ForAll <T>(Expression <Func <T, bool> > baseCondition, IEnumerable <Expression <Func <T, bool> > > conditions)
        {
            var leftHandSide = _builder.LeftHandSide();

            var forallBuilder      = leftHandSide.ForAll();
            var basePatternBuilder = forallBuilder.BasePattern(typeof(T));
            {
                var rewriter           = new ConditionRewriter(basePatternBuilder.Declaration, leftHandSide.Declarations);
                var rewrittenCondition = rewriter.Rewrite(baseCondition);
                basePatternBuilder.Condition(rewrittenCondition);
            }
            var patternBuilder = forallBuilder.Pattern(typeof(T));

            foreach (var condition in conditions)
            {
                var rewriter           = new ConditionRewriter(patternBuilder.Declaration, leftHandSide.Declarations);
                var rewrittenCondition = rewriter.Rewrite(condition);
                patternBuilder.Condition(rewrittenCondition);
            }
            return(this);
        }
Example #7
0
        public ILeftHandSide Collect <T>(Expression <Func <IEnumerable <T> > > alias, params Expression <Func <T, bool> >[] itemConditions)
        {
            var collectionSymbol = ExtractSymbol(alias);
            var leftHandSide     = _builder.LeftHandSide();

            var outerPatternBuilder = leftHandSide.Pattern(collectionSymbol.Type, collectionSymbol.Name);

            var aggregateBuilder = outerPatternBuilder.SourceAggregate();

            aggregateBuilder.CollectionOf(typeof(T));

            var patternBuilder = aggregateBuilder.SourcePattern(typeof(T));

            foreach (var condition in itemConditions)
            {
                var rewriter           = new ConditionRewriter(leftHandSide.Declarations);
                var rewrittenCondition = rewriter.Rewrite(patternBuilder.Declaration, condition);
                patternBuilder.Condition(rewrittenCondition);
            }
            return(this);
        }