示例#1
0
        public JoinExpression(IEnumerableExpression <TOuter> outer, IEnumerable <TInner> inner, Expression <Func <TOuter, TKey> > outerKeySelector, Func <TOuter, TKey> outerKeySelectorCompiled, Expression <Func <TInner, TKey> > innerKeySelector, Func <TInner, TKey> innerKeySelectorCompiled, Expression <Func <TOuter, TInner, TResult> > resultSelector, Func <TOuter, TInner, TResult> resultSelectorCompiled, IEqualityComparer <TKey> comparer)
        {
            if (outer == null)
            {
                throw new ArgumentNullException("outer");
            }
            if (inner == null)
            {
                throw new ArgumentNullException("inner");
            }
            if (outerKeySelector == null)
            {
                throw new ArgumentNullException("outerKeySelector");
            }
            if (innerKeySelector == null)
            {
                throw new ArgumentNullException("innerKeySelector");
            }
            if (resultSelector == null)
            {
                throw new ArgumentNullException("resultSelector");
            }

            Source                   = outer;
            Inner                    = inner;
            OuterKeySelector         = outerKeySelector;
            OuterKeySelectorCompiled = outerKeySelectorCompiled ?? ExpressionCompileRewriter.Compile(outerKeySelector);
            InnerKeySelector         = innerKeySelector;
            InnerKeySelectorCompiled = innerKeySelectorCompiled ?? ExpressionCompileRewriter.Compile(innerKeySelector);
            ResultSelector           = resultSelector;
            ResultSelectorCompiled   = resultSelectorCompiled ?? ExpressionCompileRewriter.Compile(resultSelector);
            Comparer                 = comparer;
        }
示例#2
0
 private void AddElements(IEnumerableExpression <T> elements)
 {
     if (elements != null)
     {
         if (Incremental)
         {
             var incElements = elements.AsNotifiable();
             foreach (var node in incElements)
             {
                 nodes.Add(node, new EulerVertex(node, this));
             }
             foreach (var vertex in nodes.Values)
             {
                 CreateEdgesFor(vertex);
             }
             incElements.Successors.Set(this);
             this.incElements = incElements;
         }
         else
         {
             foreach (var node in elements)
             {
                 nodes.Add(node, new EulerVertex(node, this));
             }
             foreach (var vertex in nodes.Values)
             {
                 CreateEdgesFor(vertex);
             }
         }
     }
 }
示例#3
0
        public override Func <bool> CreateCheck(IEnumerableExpression <Node> nodes, Node start, Node target)
        {
            var holm = new HolmConnectivity <Node>(n => n.Edges, true, nodes);
            var inc  = Observable.Expression(() => holm.AreConnected(start, target));

            return(() => inc.Value);
        }
示例#4
0
 public ProcessColumn(int column, IEnumerableExpression <ProcessWell> wells)
 {
     Column         = column;
     Samples        = wells;
     AllSamples     = wells.Select(w => w.Sample);
     AnyValidSample = _anyNonErrorSample.Observe(this);
     AnyValidSample.Successors.SetDummy();
 }
示例#5
0
 public ProcessPlate(string name, IEnumerableExpression <ProcessColumn> columns)
 {
     Name           = name;
     Columns        = columns;
     AllSamples     = columns.SelectMany(c => c.AllSamples);
     AnyValidSample = _hasValidSample.Observe(this);
     AnyValidSample.Successors.SetDummy();
 }
示例#6
0
 /// <summary>
 /// This method encapsulates the query. It is used both for the incremental version as well as the batch version
 /// </summary>
 /// <param name="employees">The collection of employees</param>
 /// <returns>A query of employees</returns>
 private static IEnumerableExpression <Employee> CreateQuery(IEnumerableExpression <Employee> employees)
 {
     return(from employee in employees
            group employee by employee.Team into team
            let teamMax = team.Max(member => member.WorkItems)
                          from collegue in team
                          where 4 * collegue.WorkItems < teamMax
                          select collegue);
 }
示例#7
0
        public CustomCollection(IEnumerableExpression <T> inner)
        {
            if (inner == null)
            {
                throw new ArgumentNullException(nameof(inner));
            }

            Inner = inner;
        }
示例#8
0
        public OfTypeExpression(IEnumerableExpression source)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            Source = source;
        }
示例#9
0
 /// <summary>
 /// This method encapsulates the query. It is used both for the incremental version as well as the batch version
 /// </summary>
 /// <param name="employees">The collection of employees</param>
 /// <returns>A query of employees</returns>
 private static IEnumerableExpression<Employee> CreateQuery(IEnumerableExpression<Employee> employees)
 {
     return from employee in employees
            group employee by employee.Team into team
            let teamMax = team.Max(member => member.WorkItems)
            from collegue in team
            where 4 * collegue.WorkItems < teamMax
            select collegue;
 }
        public JobsOfProtocolStep(string protocolStepName, IEnumerableExpression <IJob> jobs, ITransformationContext context) : this(context)
        {
            _protocolStepName = protocolStepName;

            foreach (var item in jobs)
            {
                Jobs.Add(item);
            }
        }
示例#11
0
        public DistinctExpression(IEnumerableExpression <T> source, IEqualityComparer <T> comparer)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }

            Source   = source;
            Comparer = comparer ?? EqualityComparer <T> .Default;
        }
        public void InitializeContext(IEnumerableExpression <ISample> samples, ISynchronizationContext context)
        {
            context.Data.Add(_platesKey, samples
                             .ChunkIndexed(8, (samples, column) => new ProcessColumn(column, samples.Select(tuple => new ProcessWell(tuple.Item2 % 96, tuple.Item1))))
                             .Chunk(12, (columns, plateIndex) => new ProcessPlate($"Plate{plateIndex+1:00}", columns))
                             .AsNotifiable());

            context.Data.Add(_tubesKey, samples
                             .ChunkIndexed(16, (samples, tubeIndex) => new Tubes($"Tube{tubeIndex+1:00}", samples.Select(tuple => new ProcessWell(tuple.Item2 % 16, tuple.Item1))))
                             .AsNotifiable());
        }
示例#13
0
        public ConcatExpression(IEnumerableExpression <T> source, IEnumerable <T> other)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (other == null)
            {
                throw new ArgumentNullException("other");
            }

            Source = source;
            Other  = other;
        }
示例#14
0
        public SetExpression(IEnumerableExpression <T> source, IEnumerable <T> other, IEqualityComparer <T> comparer)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (other == null)
            {
                throw new ArgumentNullException("other");
            }

            Source   = source;
            Other    = other;
            Comparer = comparer ?? EqualityComparer <T> .Default;
        }
示例#15
0
        public WhereExpression(IEnumerableExpression <T> source, Expression <Func <T, bool> > predicate, Func <T, bool> predicateCompiled)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (predicate == null)
            {
                throw new ArgumentNullException("selector");
            }
            if (predicateCompiled == null)
            {
                predicateCompiled = ExpressionCompileRewriter.Compile(predicate);
            }

            Source = source;
            PredicateExpression = predicate;
            PredicateCompiled   = predicateCompiled;
        }
示例#16
0
        public SelectExpression(IEnumerableExpression <TSource> source, Expression <Func <TSource, TResult> > selector, Func <TSource, TResult> selectorCompiled)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (selector == null)
            {
                throw new ArgumentNullException("selector");
            }
            if (selectorCompiled == null)
            {
                selectorCompiled = ExpressionCompileRewriter.Compile(selector);
            }

            Source             = source;
            SelectorExpression = selector;
            SelectorCompiled   = selectorCompiled;
        }
示例#17
0
        public GroupByExpression(IEnumerableExpression <TElement> source, Expression <Func <TElement, TKey> > keySelector, Func <TElement, TKey> keySelectorCompiled, IEqualityComparer <TKey> comparer)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (keySelector == null)
            {
                throw new ArgumentNullException("keySelector");
            }
            if (keySelectorCompiled == null)
            {
                keySelectorCompiled = ExpressionCompileRewriter.Compile(keySelector);
            }

            Source            = source;
            Predicate         = keySelector;
            PredicateCompiled = keySelectorCompiled;
            Comparer          = comparer ?? EqualityComparer <TKey> .Default;
        }
示例#18
0
        public SelectManyExpression(IEnumerableExpression <TSource> source, Expression <Func <TSource, IEnumerable <TIntermediate> > > func, Func <TSource, IEnumerable <TIntermediate> > funcCompiled, Expression <Func <TSource, TIntermediate, TResult> > resultSelector, Func <TSource, TIntermediate, TResult> resultSelectorCompiled)
        {
            if (source == null)
            {
                throw new ArgumentNullException("source");
            }
            if (func == null)
            {
                throw new ArgumentNullException("func");
            }
            if (resultSelector == null)
            {
                throw new ArgumentNullException("resultSelector");
            }

            Source                 = source;
            FuncExpression         = func;
            FuncCompiled           = funcCompiled ?? ExpressionCompileRewriter.Compile(func);
            ResultSelector         = resultSelector;
            ResultSelectorCompiled = resultSelectorCompiled ?? ExpressionCompileRewriter.Compile(resultSelector);
        }
示例#19
0
 private void AddElements(IEnumerableExpression <T> elements)
 {
     if (elements != null)
     {
         if (Incremental)
         {
             var incElements = elements.AsNotifiable();
             foreach (var node in incElements)
             {
                 GetOrCreate(node, true);
             }
             incElements.CollectionChanged += RootElementsChanged;
             this.incElements = incElements;
         }
         else
         {
             foreach (var node in elements)
             {
                 GetOrCreate(node, true);
             }
         }
     }
 }
示例#20
0
 public static INotifyValue <int> SumLambdaIntExpression <TSource>(IEnumerableExpression <TSource> source, Expression <Func <TSource, int> > selector)
 {
     return(SumInt(source.AsNotifiable().Select(selector)));
 }
示例#21
0
文件: For.cs 项目: zachwieja/RTVS
 protected override bool ParseExpression(ParseContext context, IAstNode parent)
 {
     this.EnumerableExpression = new EnumerableExpression();
     return(this.EnumerableExpression.Parse(context, this));
 }
示例#22
0
 public static ObservableLambdaAny <TSource> CreateExpression(IEnumerableExpression <TSource> source, Expression <Func <TSource, bool> > selector)
 {
     return(new ObservableLambdaAny <TSource>(source.AsNotifiable(), selector));
 }
示例#23
0
 public static ObservableAny <TSource> CreateExpression(IEnumerableExpression <TSource> source)
 {
     return(new ObservableAny <TSource>(source.AsNotifiable()));
 }
示例#24
0
 public static ObservableSingleOrDefault <TSource> CreateExpressionForPredicate2(IEnumerableExpression <TSource> source, Expression <Func <TSource, bool> > predicate, Func <TSource, bool> predicateCompiled)
 {
     return(CreateExpressionForPredicate(source, predicate));
 }
示例#25
0
 public static ObservableSingleOrDefault <TSource> CreateExpressionForPredicate(IEnumerableExpression <TSource> source, Expression <Func <TSource, bool> > predicate)
 {
     return(new ObservableSingleOrDefault <TSource>(source.AsNotifiable().Where(predicate)));
 }
示例#26
0
 public static ObservableFirstOrDefault <TSource> CreateExpression(IEnumerableExpression <TSource> source)
 {
     return(Create(source.AsNotifiable()));
 }
示例#27
0
 public static INotifyValue <decimal?> SumLambdaNullableDecimalExpression <TSource>(IEnumerableExpression <TSource> source, Expression <Func <TSource, decimal?> > selector)
 {
     return(SumNullableDecimal(source.AsNotifiable().Select(selector)));
 }
示例#28
0
 public static INotifyValue <float?> SumLambdaNullableFloatExpression <TSource>(IEnumerableExpression <TSource> source, Expression <Func <TSource, float?> > selector)
 {
     return(SumNullableFloat(source.AsNotifiable().Select(selector)));
 }
示例#29
0
 public static INotifyValue <double> SumLambdaDoubleExpression <TSource>(IEnumerableExpression <TSource> source, Expression <Func <TSource, double> > selector)
 {
     return(SumDouble(source.AsNotifiable().Select(selector)));
 }
示例#30
0
 private static Expression<Func<bool>> CreateConnectivityAnalysis(IEnumerableExpression<Employee> employees, Employee a, Employee b)
 {
     return () => Connectivity<Employee>.Create(e => e.Knows, employees).AreConnected(a, b);
 }
示例#31
0
 public static INotifyValue <decimal?> SumNullableDecimalExpression(IEnumerableExpression <decimal?> source)
 {
     return(SumNullableDecimal(source.AsNotifiable()));
 }
示例#32
0
 public static INotifyValue <long> SumLambdaLongExpression <TSource>(IEnumerableExpression <TSource> source, Expression <Func <TSource, long> > selector)
 {
     return(SumLong(source.AsNotifiable().Select(selector)));
 }
示例#33
0
 protected override bool ParseExpression(ParseContext context, IAstNode parent) {
     this.EnumerableExpression = new EnumerableExpression();
     return this.EnumerableExpression.Parse(context, this);
 }