C# 中的一行将 Enum 转换为 Int 数组

Dan*_*Dan 2 c# linq enums

在尝试将枚举转换为其值的 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()到此也失败。

那么,什么是不混乱的单行解决方案呢?

dca*_*tro 5

Enumerable.Cast<T>迭代集合并将每个项目转换为T

您正在尝试将每个实例强制转换为int[]- 您希望将它们强制转换int为:

.Cast<int>()
Run Code Online (Sandbox Code Playgroud)