示例#1
0
        /// <summary>
        /// Groups the elements of an observable sequence according to a specified key selector function and comparer and selects the resulting elements by using a specified function.
        /// </summary>
        /// <typeparam name="TSource">The type of the elements in the source sequence.</typeparam>
        /// <typeparam name="TKey">The type of the grouping key computed for each element in the source sequence.</typeparam>
        /// <typeparam name="TElement">The type of the elements within the groups computed for each element in the source sequence.</typeparam>
        /// <param name="source">An observable sequence whose elements to group.</param>
        /// <param name="keySelector">A function to extract the key for each element.</param>
        /// <param name="elementSelector">A function to map each source element to an element in an observable group.</param>
        /// <param name="comparerFactory">The definition of a comparer to compare keys.</param>
        public static IObservable <IGroupedObservable <TKey, TElement> > GroupBy <TSource, TKey, TElement>(this IObservable <TSource> source, Func <TSource, TKey> keySelector, Func <TSource, TElement> elementSelector, Func <EqualityComparerBuilderFor <TKey>, IEqualityComparer <TKey> > comparerFactory)
        {
            var comparer = comparerFactory(EqualityComparerBuilder.For <TKey>());

            return(source.GroupBy(keySelector, elementSelector, comparer));
        }
示例#2
0
        /// <summary>
        /// Returns an observable sequence that contains only distinct elements according to the comparer.
        /// </summary>
        /// <typeparam name="TSource">The type of the elements in the source sequence.</typeparam>
        /// <param name="source">An observable sequence to retain distinct elements for.</param>
        /// <param name="comparerFactory">The definition of a comparer to compare elements.</param>
        public static IObservable <TSource> Distinct <TSource>(this IObservable <TSource> source, Func <EqualityComparerBuilderFor <TSource>, IEqualityComparer <TSource> > comparerFactory)
        {
            var comparer = comparerFactory(EqualityComparerBuilder.For <TSource>());

            return(source.Distinct(comparer));
        }
示例#3
0
        /// <summary>
        /// Returns an observable sequence that contains only distinct contiguous elements according to the keySelector and the comparer.
        /// </summary>
        /// <typeparam name="TSource">The type of the elements in the source sequence.</typeparam>
        /// <typeparam name="TKey">The type of the discriminator key computed for each element in the source sequence.</typeparam>
        /// <param name="source">An observable sequence to retain distinct contiguous elements for, based on a computed key value.</param>
        /// <param name="keySelector">A function to compute the comparison key for each element.</param>
        /// <param name="comparerFactory">The definition of a comparer to compare keys.</param>
        public static IObservable <TSource> DistinctUntilChanged <TSource, TKey>(this IObservable <TSource> source, Func <TSource, TKey> keySelector, Func <EqualityComparerBuilderFor <TKey>, IEqualityComparer <TKey> > comparerFactory)
        {
            var comparer = comparerFactory(EqualityComparerBuilder.For <TKey>());

            return(source.DistinctUntilChanged(keySelector, comparer));
        }
示例#4
0
        /// <summary>
        /// Determines whether an observable sequence contains a specified element by using a specified equality comparer.
        /// </summary>
        /// <typeparam name="TSource">The type of the elements in the source sequence.</typeparam>
        /// <param name="source">An observable sequence in which to locate a value.</param>
        /// <param name="value">The value to locate in the source sequence.</param>
        /// <param name="comparerFactory">The definition of a comparer to compare elements.</param>
        public static IObservable <bool> Contains <TSource>(this IObservable <TSource> source, TSource value, Func <EqualityComparerBuilderFor <TSource>, IEqualityComparer <TSource> > comparerFactory)
        {
            var comparer = comparerFactory(EqualityComparerBuilder.For <TSource>());

            return(source.Contains(value, comparer));
        }