在尝试将枚举转换为其值的 int[] 时,我最初想出了冗长的方法:
Enum.GetValues(typeof(Isolations.Enumerations.TypeSelectionScope))
.Cast<Isolations.Enumerations.TypeSelectionScope>().Select(t => (int)t).ToArray()
Run Code Online (Sandbox Code Playgroud)
它有效,但是......好吧,它并不漂亮。
我做了一些搜索,发现人们ConvertAll()
在多行中用于此目的。所以我尝试了内联。
Array.ConvertAll(Enum.GetValues(typeof(Isolations.Enumerations.TypeSelectionScope)), value => (int)value)
Run Code Online (Sandbox Code Playgroud)
这会产生类型错误,并且在其中添加一些转换将会使其像第一次尝试一样混乱。
我也尝试过直接强制转换,int[]
但无济于事:
Enum.GetValues(typeof(Isolations.Enumerations.TypeSelectionScope)).Cast<int[]>()
Run Code Online (Sandbox Code Playgroud)
添加 aToArray()
到此也失败。
那么,什么是不混乱的单行解决方案呢?
Enumerable.Cast<T>
迭代集合并将每个项目转换为T
您正在尝试将每个实例强制转换为int[]
- 您希望将它们强制转换int
为:
.Cast<int>()
Run Code Online (Sandbox Code Playgroud)