我有两个具有相同成员名称的枚举,但它们位于不同的名称空间中,因此它们是“不同类型”,但实际上是namespace1.enum1 {a,b,c,d,e,f}和namespace2.enum2 {a,b,c,d,e,f}
如何在不使用循环的情况下将IEnumerable<enum1>
转换为List<enum2>
的最简单方法是什么?
答案 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
)。
请参阅评论以找出原因。