Csharp/C#教程:Enum上的IEnumerable扩展方法分享


Enum上的IEnumerable扩展方法

我有一个枚举(下面),我希望能够使用LINQ扩展方法。

enum Suit{ Hearts = 0, Diamonds = 1, Clubs = 2, Spades = 3 } 

Enum.GetValues(…)是返回类型System.Array,但我似乎无法访问ToList()扩展或其他任何类型。

我只是想写点像……

 foreach(Suit s in Enum.GetValues(typeof(Suit)).Select(x=>x).Where(x=> x != param)){} 

有什么我想念的,或者有人可以向我解释为什么这是不可能的?

谢谢。

Enum.GetValues返回一个System.ArraySystem.Array只实现IEnumerable而不是IEnumerable所以你需要使用Enumerable.OfType扩展方法将IEnumerable转换为IEnumerable如下所示:

 Enum.GetValues(typeof(Suit)) .OfType() .Where(x => x != param); 

编辑:我删除了对IEnumerable.Select的调用,因为它是一个多余的投影,没有任何有意义的翻译。 您可以自由过滤从OfType返回的IEnumerable OfType

Array实现IEnumerable,因此您需要使用CastIEnumerble OfType来获取类似ToList()的IEnumerble扩展;

上述就是C#学习教程:Enum上的IEnumerable扩展方法分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1031042.html

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐