我有一个方法,例如:
public void DoIt(params MyEnum[] channels)
{
}
有没有办法获取参数中枚举的 int 值?
我试过var myInts = channels.Select(x => x.Value)
但没有运气
var myInts = channels.Cast<int>();
var ints = (int[]) (object) channels;
您可以在 select 子句中进行强制转换:
var myInts = channels.Select(x => (int)x);
不使用 LINQ 的另一种方法:
var vals = Array.ConvertAll(channels, c =>(int)c);
var myInts = channels.Select(x=x.Value)
这不起作用,因为=
需要=> (int)x
我想var myInts = channels.Select(x => (int)x).ToArray();
会做你想做的。
这应该这样做:
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;
然后,您可以调用ToArray()
or ToList()
onmyInts
来获取 aMyEnum[]
或 aList<MyEnum>