如果
X真的可以投给
Y你应该可以使用
List<Y> listOfY = listOfX.Cast<Y>().ToList();
需要注意的一些事情(向评论者致敬!)
- 您必须包括
using System.Linq;
以获得此扩展方法 - 这将强制转换列表中的每个项目,而不是列表本身。
List<Y>
通过调用将创建一个新的ToList()
。 - 此方法不支持自定义转换运算符。(请参阅http://stackoverflow.com/questions/14523530/why-does-the-linq-cast-helper-not-work-with-the-implicit-cast-operator)
- 此方法不适用于具有显式运算符方法的对象(框架4.0)



