using System; using System.Collections.Generic; using System.Linq; [Flags] public enum TypeMoEnum : long { NotDefined = 0, MO = 1, Federal = 2, Laboratory = 4, CallCentre = 8, ForRouteCard = 16 } public class Test { private static IEnumerable<TypeMoEnum> With(TypeMoEnum value) { long lim = Enum.GetValues(typeof(TypeMoEnum)).OfType<TypeMoEnum>().Max(x => (long)x) << 1; long val = (long)value, step = val<<1; for (long l=val; l<lim; l+=step) for (long r=0; r<val; ++r) yield return (TypeMoEnum)(l|r); } public static void Main() { foreach(var x in With(TypeMoEnum.Laboratory)) Console.WriteLine(x); } }
Standard input is empty
Laboratory MO, Laboratory Federal, Laboratory MO, Federal, Laboratory Laboratory, CallCentre MO, Laboratory, CallCentre Federal, Laboratory, CallCentre MO, Federal, Laboratory, CallCentre Laboratory, ForRouteCard MO, Laboratory, ForRouteCard Federal, Laboratory, ForRouteCard MO, Federal, Laboratory, ForRouteCard Laboratory, CallCentre, ForRouteCard MO, Laboratory, CallCentre, ForRouteCard Federal, Laboratory, CallCentre, ForRouteCard MO, Federal, Laboratory, CallCentre, ForRouteCard