快速IEnumerable <enum1>到List <enum2>转换

时间:2016-12-05 12:51:59

标签: c# ienumerable

我有两个具有相同成员名称的枚举,但它们位于不同的名称空间中,因此它们是“不同类型”,但实际上是namespace1.enum1 {a,b,c,d,e,f}和namespace2.enum2 {a,b,c,d,e,f}

如何在不使用循环的情况下将IEnumerable<enum1>转换为List<enum2>的最简单方法是什么?

2 个答案:

答案 0 :(得分:14)

好的东西会在某处循环,但它不一定在你的代码中。只需LINQ Select即可:

var result = original.Select(x => (Enum2) x).ToList();

答案 1 :(得分:3)

或者您可以使用Cast(仍为O(n): - ))

var result = original.Cast<int>().Cast<Enum2>().ToList();

警告 似乎这并不总是按预期工作(在某些情况下可以抛出InvalidCastException)。 请参阅评论以找出原因。