0

我有这个代码:

(具有 a,b,c ...[0,1,2] 值的简单枚举,我想显示每个循环数字 - 它enum在最终列表中对应)。

public enum ENM
{
   a,b,c
}


void Main()
{

var e = Enumerable.Range(0,3).Select(myCounter=>new {

          final=((Func<int,ENM>)delegate (int i)
                                    {
                                         return (ENM)i;
                                    })(myCounter)

}).ToList();

这很好并且工作。

有没有不写的解决办法delegate(int i) {...}

ps当然我可以写(ENM)i,但问题是学习如何(以不同的方式)编写自动执行的方法。

4

3 回答 3

1

为什么不

Enumerable.Range(0,3).Select(c=>(ENM)c).ToList()

还是我错过了过于复杂的一些原因?

var e = Enumerable.Range(0, 3).Select(myCounter => new
{
    final = ((Func<int, ENM>)(
        i=>{ 
            return (ENM)i;
            /* More code could be here */
        }))(myCounter)
}).ToList();

如果你想要同样的混乱,你会得到尽可能紧的东西:)

于 2012-11-15T10:13:39.193 回答
1
var e = Enum.GetNames(typeof(ENM)).Select((e, i) => new { final = e, index = i }).ToList();

或者

var EnumNames = Enum.GetNames(typeof(ENM));
var EnumValues = Enum.GetValues(typeof(ENM)).Cast<ENM>().Select(e => (int)e);
var result = EnumNames.Zip(EnumValues, (n, v) => new { final = n, index = v });
于 2012-11-15T10:22:54.257 回答
0

有一个特定的方法System.Enum可以做到这一点:

var arr = Enum.GetValues(typeof(ENM));

把它变成一个List<ENM>

var lst = arr.Cast<ENM>().ToList();
于 2012-11-15T10:17:11.997 回答