Con questo snippet inauguro una nuova categoria per “ritrovare” gli esempi di codice che mi piacciono e che non voglio perdere:

   1: public static List<T> EnumToList<T>()
   2: {
   3:     Type enumType = typeof (T);
   4:  
   5:     // Can't use type constraints on value types, so have to do check like this
   6:     if (enumType.BaseType != typeof(Enum))
   7:         throw new ArgumentException("T must be of type System.Enum");
   8:     
   9:     Array enumValArray = Enum.GetValues(enumType);
  10:  
  11:     List<T> enumValList = new List<T>(enumValArray.Length);
  12:  
  13:     foreach (int val in enumValArray) {
  14:         enumValList.Add((T)Enum.Parse(enumType, val.ToString()));
  15:     }
  16:  
  17:     return enumValList;
  18: } 

Un esempio di utilizzo:

   1: List<DayOfWeek> weekdays =
   2:     EnumHelper.EnumToList<DayOfWeek>().FindAll(
   3:         delegate (DayOfWeek x)
   4:         {
   5:             return x != DayOfWeek.Sunday && x != DayOfWeek.Saturday;
   6:         });

Lo snippet l’ho preso da qui.