使用需要 T1 的 T2 构造函数从 T1 列表创建 T2 列表 [重复]

Posted

技术标签:

【中文标题】使用需要 T1 的 T2 构造函数从 T1 列表创建 T2 列表 [重复]【英文标题】:Create list of T2 from list of T1, using T2's constructor that requires T1 [duplicate] 【发布时间】:2020-06-29 19:16:21 【问题描述】:

如果我从方法 GetType1List 获得 Type1 的列表

List<Type1> Type1List = GetType1List();

然后我可以创建一个Type2 的列表,并使用foreach 在第一个列表中循环,以使用需要Type1 实例的构造函数添加新的Type2

List<Type2> Type2List = new List<Type2>();
foreach(Type1 type1 in Type1List)

    Type2List.Add(new Type2(Type1));

有没有什么方法可以在不创建Type1 的初始列表和foreach 循环的情况下结束它?

【问题讨论】:

【参考方案1】:

使用 LINQ Select:

List<Type2> Type2List = Type1List
    .Select(type1 => new Type2(type1))
    .ToList();

【讨论】:

【参考方案2】:

你可以使用 Linq:

var TypeList2 = GetType1List().Select(type1 => new Type2(type1)).ToList();

【讨论】:

【参考方案3】:

最简单的方法似乎是List&lt;T&gt;.ConvertAll() 方法,不使用System.Linq 参考

var Type1List = GetType1List();
var Type2List = Type1List.ConvertAll(t1 => new Type2(t1));

【讨论】:

以上是关于使用需要 T1 的 T2 构造函数从 T1 列表创建 T2 列表 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 cpp 中的父线程暂停和恢复线程

C++-------深拷贝

类中的特殊成员函数

Thread构造函数?

如果 T2 是 T1 属性之一,如何检查 <T1> 的集合是不是包含 <T2> 的集合?

如何使用 AVAudioPlayer 从时间 t1 到 t2 在 Xcode 中播放 mp3 文件