aha*_*ker 25 c# linq extension-methods enums
我有一个enum(下面),我希望能够使用LINQ扩展方法.
enum Suit{
Hearts = 0,
Diamonds = 1,
Clubs = 2,
Spades = 3
}
Run Code Online (Sandbox Code Playgroud)
Enum.GetValues(...)是返回类型System.Array,但我似乎无法访问ToList()扩展或其他任何类型.
我只是想写点像......
foreach(Suit s in Enum.GetValues(typeof(Suit)).Select(x=>x).Where(x=> x != param)){}
Run Code Online (Sandbox Code Playgroud)
有什么我想念的,或者有人可以向我解释为什么这是不可能的?
谢谢.
And*_*are 42
Enum.GetValues返回一个System.Array和System.Array唯一实现IEnumerable,而不是IEnumerable<T>所以你需要使用Enumerable.OfType扩展方法来转换IEnumerable到IEnumerable<Suit>这样的:
Enum.GetValues(typeof(Suit))
.OfType<Suit>()
.Where(x => x != param);
Run Code Online (Sandbox Code Playgroud)
编辑:我删除了调用,IEnumerable.Select因为它是一个多余的投影,没有任何有意义的翻译.您可以自由过滤IEnumerable<Suit>从中返回的内容OfType<T>.