此代码应将listType2s(list)列表转换为type1s列表。我觉得功能有点难以确定。
我希望看到更容易阅读,简洁,简洁的替代方法。
List<Type1> type1s = new List<Type1>();
listType2s.ForEach(t => type1s.Add((new Type1(t))));
答案 0 :(得分:5)
我普遍同意在这种情况下使用LINQ - 但List<T>
自.NET 2.0起有一个ConvertAll
方法,实际上效率稍高(因为它已经知道大小):
List<Type1> type1s = listType2s.ConvertAll(t => new Type1(t));
我自己可能自己使用LINQ,除非我有一个特殊的理由不这样做,因为那时它与其他可能也会使用LINQ的代码一致。
答案 1 :(得分:4)
我个人喜欢:
var type1s = (from item in listType2s select new Type1(item)).ToList();
我应该说,我实际上更喜欢
var qry = from item in listType2s
select new Type1(item);
var type1s = qry.ToList();
但主要是因为如果我愿意,我可以将qry
用于其他恶意目的。
答案 2 :(得分:4)
var type1s = listType2s.Select(o => new Type1(o)).ToList();
答案 3 :(得分:3)
我认为最明确的方法是以下
var type1s = listType2s.Select(x => new Type1(x)).ToList();
答案 4 :(得分:0)
如果你正在向上倾斜,这是一个简洁明了的习语:
List<SubType> list1 = GetListSubType();
List<BaseType> list2 = list1.OfType<BaseType>().ToList();