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 }