2

我有一个方法,例如:

public void DoIt(params MyEnum[] channels)
{

}

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

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

4

7 回答 7

7
var myInts = channels.Cast<int>();
于 2013-05-01T15:56:46.413 回答
7
var ints = (int[]) (object) channels;
于 2013-05-02T21:11:15.187 回答
5

您可以在 select 子句中进行强制转换:

var myInts = channels.Select(x => (int)x);
于 2013-05-01T15:55:22.690 回答
5

不使用 LINQ 的另一种方法:

var vals = Array.ConvertAll(channels, c =>(int)c);
于 2013-05-01T15:56:35.137 回答
2

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

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

于 2013-05-01T15:56:26.243 回答
1

这应该这样做:

public void DoIt(params MyEnum[] channels)
{
   int[] ret = channels.Select(x => ((int)x)).ToArray();
}
于 2013-05-01T15:55:55.383 回答
1

你可以这样做:

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

或作为 LINQ 查询:

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

然后,您可以调用ToArray()or ToList()onmyInts来获取 aMyEnum[]或 aList<MyEnum>

于 2013-05-01T15:55:58.740 回答