using System.Collections.Generic; namespace System { //From https://github.com/Burtsev-Alexey/net-object-deep-copy public static class ObjectExtensions { public static IEnumerable DistinctBy(this IEnumerable source, Func keySelector) { var seenKeys = new HashSet(); foreach (var element in source) { if (seenKeys.Add(keySelector(element))) { yield return element; } } } } }