我知道可以一次将一个项目列表从一种类型转换为另一种类型(假定您的对象具有公共(public)静态显式运算符方法来进行转换):
List<Y> ListOfY = new List<Y>();
foreach(X x in ListOfX)
ListOfY.Add((Y)x);
但是一次投出整个列表是不可能的吗?例如,
ListOfY = (List<Y>)ListOfX;
最佳答案
如果X
真的可以投到Y
你应该可以使用
List<Y> listOfY = listOfX.Cast<Y>().ToList();
一些需要注意的事情(H/T to commenters!)
- 您必须包括
using System.Linq;
得到这个扩展方法 - 这会强制转换列表中的每一项——而不是列表本身。一个新的
List<Y>
将通过调用ToList()
创建. - 此方法不支持自定义转换运算符。 (参见 Why does the Linq Cast<> helper not work with the implicit cast operator?)
- 此方法不适用于具有显式运算符方法的对象(框架 4.0)
关于c# - 从 List<X> 转换为 List<Y> 的语法更短?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5115275/