While not the best solution I believe this is the only solution at this time due to the fact that enums are not instances of objects. Allows you to take an Enum and convert it to a Typed List which also gives you LINQabilty on it.

Usage:

   1: var list = StringComparison.CurrentCulture.EnumToList();
   2: foreach (var enumValue in list)
   3: {
   4: ...
   5: }

And the method:

   1: /// <summary>
   2: ///     Converts a enum to a list
   3: /// </summary>
   4: /// <typeparam name="T">string name of type of Enum</typeparam>
   5: /// <returns>An enumerable list of Enum Type "T"</returns>
   6: /// <remarks>
   7: ///     Usage:
   8: ///     var list = StringComparison.CurrentCulture.EnumToList();
   9: /// </remarks>
  10: public static IEnumerable<T> EnumToList<T>(this T enumName) where T : struct
  11: {
  12:     Type enumType = enumName.GetType();
  13:  
  14:     // Can’t use generic type constraints on value types,
  15:     // so have to do check like this
  16:     if (enumType.BaseType != typeof (Enum))
  17:         throw new ArgumentException(enumType + " is not an Enum.", "T", null);
  18:  
  19:     var enumValArray = Enum.GetValues(enumType);
  20:     var enumValList = new List<T>(enumValArray.Length);
  21:  
  22:     foreach (int val in enumValArray)
  23:     {
  24:         enumValList.Add((T) Enum.Parse(enumType, val.ToString()));
  25:     }
  26:  
  27:     return enumValList;
  28: }