C# 获取枚举[]的int值

C# 获取枚举[]的int值,c#,.net,enums,C#,.net,Enums,我有一种方法,例如: public void DoIt(params MyEnum[] channels) { } 有没有办法获取参数中枚举的int值 我尝试了var myInts=channels.Select(x=>x.Value)但是运气不好您可以在Select子句中执行强制转换: var myInts = channels.Select(x => (int)x); 这应该做到: public void DoIt(params MyEnum[] channels) { i

我有一种方法,例如:

public void DoIt(params MyEnum[] channels)
{

}
有没有办法获取参数中枚举的int值


我尝试了
var myInts=channels.Select(x=>x.Value)
但是运气不好

您可以在Select子句中执行强制转换:

var myInts = channels.Select(x => (int)x);
这应该做到:

public void DoIt(params MyEnum[] channels)
{
   int[] ret = channels.Select(x => ((int)x)).ToArray();
}
你可以做:

var myInts = channels.Select(e => (int)e);
或作为LINQ查询:

var myInts = from e in channels select (int)e;

然后,您可以在
myInts
上调用
ToArray()
ToList()
来获取
MyEnum[]
列表

var myInts=channels。选择(x=x.Value)
这不起作用,因为
=/code>需要是
=>(int)x


我认为
var myInts=channels.Select(x=>(int)x).ToArray()
将执行您想要的操作。

无需LINQ即可执行相同操作的另一种方法:

var vals = Array.ConvertAll(channels, c =>(int)c);
var myInts=channels.Cast();

获取枚举数组背后的想法是什么?@shahkalpesh我猜“表示零、一或多个值,用枚举表示,但在内部使用它们的基本整数值”@MarcGravel:谢谢。我猜OP正在寻找使用
FlagsAttribute
组合枚举值。此外,如果传递数组,枚举值可以传递多次。在这种情况下,您肯定会使用按位枚举吗?编辑-什么是shahkalpeshsaid@Rebel这并不一定意味着它适合[旗帜]的使用,尽管没有文档记录。
var myInts = channels.Cast<int>();
var ints = (int[]) (object) channels;