Exemplo n.º 1
0
        /// <summary>
        /// The same as Distinct only it receives a selector function instead of a comparer (thus easier to use).
        /// </summary>
        /// <typeparam name="TSource"></typeparam>
        /// <typeparam name="TValue"></typeparam>
        /// <param name="source"></param>
        /// <param name="selector"></param>
        /// <returns></returns>
        public static IEnumerable <TSource> DistinctBy <TSource, TValue>(this IEnumerable <TSource> source, Func <TSource, TValue> selector)
        {
            var comparer = DistinctByComparer <TSource> .CompareBy(
                selector, EqualityComparer <TValue> .Default);

            return(new HashSet <TSource>(source, comparer));
        }
Exemplo n.º 2
0
        public static IEnumerable <T> DistinctBy <T>(this IEnumerable <T> ienumerable, Expression <Func <T, object> > property)
        {
            var valueFunc = property.Compile();

            var distinctByComparer = new DistinctByComparer <T>(valueFunc);

            return(ienumerable.Distinct(distinctByComparer));
        }