我有一个方法如:
public void DoIt(params MyEnum[] channels)
{
}
有没有办法在参数中获取枚举的int值?
我试过var myInts = channels.Select(x => x.Value)
但没有运气
答案 0 :(得分:7)
var myInts = channels.Cast<int>();
答案 1 :(得分:7)
var ints = (int[]) (object) channels;
答案 2 :(得分:5)
你可以在select子句中进行强制转换:
var myInts = channels.Select(x => (int)x);
答案 3 :(得分:5)
另一种做同样的方法,没有LINQ:
var vals = Array.ConvertAll(channels, c =>(int)c);
答案 4 :(得分:2)
var myInts = channels.Select(x=x.Value)
这不起作用,因为=
需要=> (int)x
我认为var myInts = channels.Select(x => (int)x).ToArray();
会做你想做的事。
答案 5 :(得分:1)
这应该这样做:
public void DoIt(params MyEnum[] channels)
{
int[] ret = channels.Select(x => ((int)x)).ToArray();
}
答案 6 :(得分:1)
你可以这样做:
var myInts = channels.Select(e => (int)e);
或者作为LINQ查询:
var myInts = from e in channels select (int)e;
然后,您可以在ToArray()
上致电ToList()
或myInts
,以获得MyEnum[]
或List<MyEnum>