/// <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)); }
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)); }