IEnumerable Extension Methods on an Enum
c#, enums, extension-methods, linq
Solution
`Enum.GetValues` returns a `System.Array` and `System.Array` only implements `IEnumerable` rather than `IEnumerable<T>` so you will need to use the `Enumerable.OfType` extension method to convert the `IEnumerable` to `IEnumerable<Suit>` like this:
Enum.GetValues(typeof(Suit))
.OfType<Suit>()
.Where(x => x != param);
Edit: I removed the call to `IEnumerable.Select` as it was a superfluous projection without any meaningful translation. You can freely filter the `IEnumerable<Suit>` that is returned from `OfType<T>`.
Problem
I have an enum(below) that I want to be able to use a LINQ extension method on. ``` enum Suit{ Hearts = 0, Diamonds = 1, Clubs = 2, Spades = 3 } ``` Enum.GetValues(...) is of return type System.Array, but I can't seem to get access to a ToList() extension or anything else of that sort. I'm just looking to write something like... ``` foreach(Suit s in Enum.GetValues(typeof(Suit)).Select(x=>x).Where(x=> x != param)){} ``` Is there something I'm missing, or can someone explain to me why this isn't possible? Thanks.