using System.Collections.Generic;
public static void Main()
int[] input = new int[] { 0,0,0,1,1,1,1,1,2,2 };
Console.WriteLine(string.Join("\n", input.DistinctWhere(x => x > 0)));
public static class Extensions
public static IEnumerable<T> DistinctWhere<T>(this IEnumerable<T> input, Func<T,bool> predicate)
HashSet<T> hashset = new HashSet<T>();
if(!predicate.Invoke(item))
if(!hashset.Contains(item))