using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Szmedi.RevitToolkit.Approval.Extensions { internal static class IEnumerableExtensions { public static IEnumerable DistinctBy (this IEnumerable source, Func keySelector) { HashSet seenKeys = new HashSet(); foreach (TSource element in source) { if (seenKeys.Add(keySelector(element))) { yield return element; } } } } }