c# - 从 List<X> 转换为 List<Y> 的语法更短?

标签 c# list casting ienumerable

我知道可以一次将一个项目列表从一种类型转换为另一种类型(假定您的对象具有公共(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/

相关文章:

c# - 返回任务或等待和 ConfigureAwait(false)

c# - 异步调用方法的执行顺序

python - 将一个列表拆分为由另一个列表分组确定的组

python - 将 KERAS 张量转换为 K.tf.int32

c# - 在循环中更新文本的某些值

c# - 如何知道 CancellationToken 是否有注册的取消方法?

arrays - J:列表项之间的符号变化次数

java - jpa条件查询获取列表中的重复值

python - Pandas 从长到宽

casting - 如何在 ClickHouse 中使用扩展解析将日期字符串转换为 DateTime 格式?