2013-05-01 158 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