Add .DistinctBy (#3122)

This commit is contained in:
Sun Serega 2024-09-26 09:02:31 +02:00 committed by GitHub
parent 11981dbf47
commit 0a20c8d32c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

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