// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the Apache 2.0 License. // See the LICENSE file in the project root for more information. using System.Collections.Generic; using System.Linq; using System.Reactive.Disposables; namespace System.Reactive.Linq { using ObservableImpl; internal partial class QueryLanguage { #region + Aggregate + public virtual IObservable Aggregate(IObservable source, TAccumulate seed, Func accumulator) { return new Aggregate(source, seed, accumulator); } public virtual IObservable Aggregate(IObservable source, TAccumulate seed, Func accumulator, Func resultSelector) { return new Aggregate(source, seed, accumulator, resultSelector); } public virtual IObservable Aggregate(IObservable source, Func accumulator) { return new Aggregate(source, accumulator); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } public virtual IObservable Average(IObservable source, Func selector) { return Average(Select(source, selector)); } #endregion #region + All + public virtual IObservable All(IObservable source, Func predicate) { return new All(source, predicate); } #endregion #region + Any + public virtual IObservable Any(IObservable source) { return new Any.Count(source); } public virtual IObservable Any(IObservable source, Func predicate) { return new Any.Predicate(source, predicate); } #endregion #region + Average + public virtual IObservable Average(IObservable source) { return new AverageDouble(source); } public virtual IObservable Average(IObservable source) { return new AverageSingle(source); } public virtual IObservable Average(IObservable source) { return new AverageDecimal(source); } public virtual IObservable Average(IObservable source) { return new AverageInt32(source); } public virtual IObservable Average(IObservable source) { return new AverageInt64(source); } public virtual IObservable Average(IObservable source) { return new AverageDoubleNullable(source); } public virtual IObservable Average(IObservable source) { return new AverageSingleNullable(source); } public virtual IObservable Average(IObservable source) { return new AverageDecimalNullable(source); } public virtual IObservable Average(IObservable source) { return new AverageInt32Nullable(source); } public virtual IObservable Average(IObservable source) { return new AverageInt64Nullable(source); } #endregion #region + Contains + public virtual IObservable Contains(IObservable source, TSource value) { return new Contains(source, value, EqualityComparer.Default); } public virtual IObservable Contains(IObservable source, TSource value, IEqualityComparer comparer) { return new Contains(source, value, comparer); } #endregion #region + Count + public virtual IObservable Count(IObservable source) { return new Count.All(source); } public virtual IObservable Count(IObservable source, Func predicate) { return new Count.Predicate(source, predicate); } #endregion #region + ElementAt + public virtual IObservable ElementAt(IObservable source, int index) { return new ElementAt(source, index); } #endregion #region + ElementAtOrDefault + public virtual IObservable ElementAtOrDefault(IObservable source, int index) { return new ElementAtOrDefault(source, index); } #endregion #region + FirstAsync + public virtual IObservable FirstAsync(IObservable source) { return new FirstAsync.Sequence(source); } public virtual IObservable FirstAsync(IObservable source, Func predicate) { return new FirstAsync.Predicate(source, predicate); } #endregion #region + FirstAsyncOrDefaultAsync + public virtual IObservable FirstOrDefaultAsync(IObservable source) { return new FirstOrDefaultAsync.Sequence(source); } public virtual IObservable FirstOrDefaultAsync(IObservable source, Func predicate) { return new FirstOrDefaultAsync.Predicate(source, predicate); } #endregion #region + IsEmpty + public virtual IObservable IsEmpty(IObservable source) { return new IsEmpty(source); } #endregion #region + LastAsync + public virtual IObservable LastAsync(IObservable source) { return new LastAsync.Sequence(source); } public virtual IObservable LastAsync(IObservable source, Func predicate) { return new LastAsync.Predicate(source, predicate); } #endregion #region + LastOrDefaultAsync + public virtual IObservable LastOrDefaultAsync(IObservable source) { return new LastOrDefaultAsync.Sequence(source); } public virtual IObservable LastOrDefaultAsync(IObservable source, Func predicate) { return new LastOrDefaultAsync.Predicate(source, predicate); } #endregion #region + LongCount + public virtual IObservable LongCount(IObservable source) { return new LongCount.All(source); } public virtual IObservable LongCount(IObservable source, Func predicate) { return new LongCount.Predicate(source, predicate); } #endregion #region + Max + public virtual IObservable Max(IObservable source) { // BREAKING CHANGE v2 > v1.x - Behavior for reference types return new Max(source, Comparer.Default); } public virtual IObservable Max(IObservable source, IComparer comparer) { // BREAKING CHANGE v2 > v1.x - Behavior for reference types return new Max(source, comparer); } public virtual IObservable Max(IObservable source) { return new MaxDouble(source); } public virtual IObservable Max(IObservable source) { return new MaxSingle(source); } public virtual IObservable Max(IObservable source) { return new MaxDecimal(source); } public virtual IObservable Max(IObservable source) { return new MaxInt32(source); } public virtual IObservable Max(IObservable source) { return new MaxInt64(source); } public virtual IObservable Max(IObservable source) { return new MaxDoubleNullable(source); } public virtual IObservable Max(IObservable source) { return new MaxSingleNullable(source); } public virtual IObservable Max(IObservable source) { return new MaxDecimalNullable(source); } public virtual IObservable Max(IObservable source) { return new MaxInt32Nullable(source); } public virtual IObservable Max(IObservable source) { return new MaxInt64Nullable(source); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector, IComparer comparer) { return Max(Select(source, selector), comparer); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } public virtual IObservable Max(IObservable source, Func selector) { return Max(Select(source, selector)); } #endregion #region + MaxBy + public virtual IObservable> MaxBy(IObservable source, Func keySelector) { return new MaxBy(source, keySelector, Comparer.Default); } public virtual IObservable> MaxBy(IObservable source, Func keySelector, IComparer comparer) { return new MaxBy(source, keySelector, comparer); } #endregion #region + Min + public virtual IObservable Min(IObservable source) { // BREAKING CHANGE v2 > v1.x - Behavior for reference types return new Min(source, Comparer.Default); } public virtual IObservable Min(IObservable source, IComparer comparer) { // BREAKING CHANGE v2 > v1.x - Behavior for reference types return new Min(source, comparer); } public virtual IObservable Min(IObservable source) { return new MinDouble(source); } public virtual IObservable Min(IObservable source) { return new MinSingle(source); } public virtual IObservable Min(IObservable source) { return new MinDecimal(source); } public virtual IObservable Min(IObservable source) { return new MinInt32(source); } public virtual IObservable Min(IObservable source) { return new MinInt64(source); } public virtual IObservable Min(IObservable source) { return new MinDoubleNullable(source); } public virtual IObservable Min(IObservable source) { return new MinSingleNullable(source); } public virtual IObservable Min(IObservable source) { return new MinDecimalNullable(source); } public virtual IObservable Min(IObservable source) { return new MinInt32Nullable(source); } public virtual IObservable Min(IObservable source) { return new MinInt64Nullable(source); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector, IComparer comparer) { return Min(Select(source, selector), comparer); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } public virtual IObservable Min(IObservable source, Func selector) { return Min(Select(source, selector)); } #endregion #region + MinBy + public virtual IObservable> MinBy(IObservable source, Func keySelector) { return new MinBy(source, keySelector, Comparer.Default); } public virtual IObservable> MinBy(IObservable source, Func keySelector, IComparer comparer) { return new MinBy(source, keySelector, comparer); } #endregion #region + SequenceEqual + public virtual IObservable SequenceEqual(IObservable first, IObservable second) { return new SequenceEqual(first, second, EqualityComparer.Default); } public virtual IObservable SequenceEqual(IObservable first, IObservable second, IEqualityComparer comparer) { return new SequenceEqual(first, second, comparer); } public virtual IObservable SequenceEqual(IObservable first, IEnumerable second) { return new SequenceEqual(first, second, EqualityComparer.Default); } public virtual IObservable SequenceEqual(IObservable first, IEnumerable second, IEqualityComparer comparer) { return new SequenceEqual(first, second, comparer); } #endregion #region + SingleAsync + public virtual IObservable SingleAsync(IObservable source) { return new SingleAsync.Sequence(source); } public virtual IObservable SingleAsync(IObservable source, Func predicate) { return new SingleAsync.Predicate(source, predicate); } #endregion #region + SingleOrDefaultAsync + public virtual IObservable SingleOrDefaultAsync(IObservable source) { return new SingleOrDefaultAsync.Sequence(source); } public virtual IObservable SingleOrDefaultAsync(IObservable source, Func predicate) { return new SingleOrDefaultAsync.Predicate(source, predicate); } #endregion #region + Sum + public virtual IObservable Sum(IObservable source) { return new SumDouble(source); } public virtual IObservable Sum(IObservable source) { return new SumSingle(source); } public virtual IObservable Sum(IObservable source) { return new SumDecimal(source); } public virtual IObservable Sum(IObservable source) { return new SumInt32(source); } public virtual IObservable Sum(IObservable source) { return new SumInt64(source); } public virtual IObservable Sum(IObservable source) { return new SumDoubleNullable(source); } public virtual IObservable Sum(IObservable source) { return new SumSingleNullable(source); } public virtual IObservable Sum(IObservable source) { return new SumDecimalNullable(source); } public virtual IObservable Sum(IObservable source) { return new SumInt32Nullable(source); } public virtual IObservable Sum(IObservable source) { return new SumInt64Nullable(source); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } public virtual IObservable Sum(IObservable source, Func selector) { return Sum(Select(source, selector)); } #endregion #region + ToArray + public virtual IObservable ToArray(IObservable source) { return new ToArray(source); } #endregion #region + ToDictionary + public virtual IObservable> ToDictionary(IObservable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) { return new ToDictionary(source, keySelector, elementSelector, comparer); } public virtual IObservable> ToDictionary(IObservable source, Func keySelector, Func elementSelector) { return new ToDictionary(source, keySelector, elementSelector, EqualityComparer.Default); } public virtual IObservable> ToDictionary(IObservable source, Func keySelector, IEqualityComparer comparer) { return new ToDictionary(source, keySelector, x => x, comparer); } public virtual IObservable> ToDictionary(IObservable source, Func keySelector) { return new ToDictionary(source, keySelector, x => x, EqualityComparer.Default); } #endregion #region + ToList + public virtual IObservable> ToList(IObservable source) { return new ToList(source); } #endregion #region + ToLookup + public virtual IObservable> ToLookup(IObservable source, Func keySelector, Func elementSelector, IEqualityComparer comparer) { return new ToLookup(source, keySelector, elementSelector, comparer); } public virtual IObservable> ToLookup(IObservable source, Func keySelector, IEqualityComparer comparer) { return new ToLookup(source, keySelector, x => x, comparer); } public virtual IObservable> ToLookup(IObservable source, Func keySelector, Func elementSelector) { return new ToLookup(source, keySelector, elementSelector, EqualityComparer.Default); } public virtual IObservable> ToLookup(IObservable source, Func keySelector) { return new ToLookup(source, keySelector, x => x, EqualityComparer.Default); } #endregion } }