2013-05-01 109 views
2

我有一个方法,如:获取枚举的INT值[]

public void DoIt(params MyEnum[] channels) 
{ 

} 

有没有办法让在PARAMS的枚举的整型值?

我试图var myInts = channels.Select(x => x.Value)但没有运气

+0

什么是落后服用枚举数组的想法? – shahkalpesh 2013-05-01 15:56:20

+1

@shahkalpesh我猜测“表达零值,一个或多个值,用enum表示,但是在内部使用它们的基本整数值” – 2013-05-01 15:58:42

+0

@MarcGravell:谢谢。我猜测OP正在寻找使用'FlagsAttribute'结合枚举值。另外,如果传递数组,枚举值可以多次传递。 – shahkalpesh 2013-05-01 15:59:55

回答

7
var myInts = channels.Cast<int>(); 
5

你可以在选择子句中铸造:

var myInts = channels.Select(x => (int)x); 
1

这应做到:

public void DoIt(params MyEnum[] channels) 
{ 
    int[] ret = channels.Select(x => ((int)x)).ToArray(); 
} 
1

你可以这样做:

var myInts = channels.Select(e => (int)e); 

或作为LINQ查询:

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

你可以再调用ToArray()ToList()myInts获得MyEnum[]List<MyEnum>

2

var myInts = channels.Select(x=x.Value)这不起作用,因为=需求是=> (int)x

我认为var myInts = channels.Select(x => (int)x).ToArray();会做你想做的。

5

另一种方式做同样的,没有LINQ:

+2

哈!任何人谁都知道,你必须使用LINQ这几天... – 2013-05-01 15:57:51

7
var ints = (int[]) (object) channels; 
+10

不错,虽然没有记录。 – 2013-05-05 00:24:23