pool-stats/notlinq/notlinq.go
2025-06-23 17:52:20 +03:00

25 lines
531 B
Go

package notlinq
func UniqueBy[T any, K comparable](items []T, keySelector func(T) K) []T {
seen := make(map[K]struct{})
result := make([]T, 0, len(items))
for _, item := range items {
key := keySelector(item)
if _, exists := seen[key]; !exists {
seen[key] = struct{}{}
result = append(result, item)
}
}
return result
}
func Where[T any](items []T, predicate func(T) bool) []T {
result := make([]T, 0)
for _, item := range items {
if predicate(item) {
result = append(result, item)
}
}
return result
}