using System.Collections.Generic;
public static IEnumerable<T> EnumerateMask<T>(Enum mask)
return Enum.GetValues(typeof (T)).Cast<Enum>().Where(mask.HasFlag).Cast<T>().Skip(1);
public static void Main()
var mask = TestEnum.AA | TestEnum.None | TestEnum.DD;
foreach (var value in EnumerateMask<TestEnum>(mask))
Console.WriteLine(value);