diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index 308a1be83..a7f234979 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -11606,6 +11606,17 @@ begin Result += 1; end; +/// Возвращает элементы последовательности, ключи для которых отличаются, используя компоратор comp +function DistinctBy(Self: sequence of T; by: T->TKey; comp: IEqualityComparer): sequence of T; extensionmethod; +begin + var hs := new HashSet(comp); + foreach var x in Self do + if hs.Add(by(x)) then + yield x; +end; +/// Возвращает элементы последовательности, ключи для которых отличаются, используя компоратор по-умолчанию +function DistinctBy(Self: sequence of T; by: T->TKey); extensionmethod := Self.DistinctBy(by, nil); + // ----------------------------------------------------- //>> Методы расширения списков # Extension methods for List T // -----------------------------------------------------