此代码应将listType2s(列表)列表转换为type1s列表。我觉得功能有点难以确定。用于转换通用列表的代码清晰度?
我期待看到更易于阅读,简洁且简洁的替代方法。
List<Type1> type1s = new List<Type1>();
listType2s.ForEach(t => type1s.Add((new Type1(t))));
此代码应将listType2s(列表)列表转换为type1s列表。我觉得功能有点难以确定。用于转换通用列表的代码清晰度?
我期待看到更易于阅读,简洁且简洁的替代方法。
List<Type1> type1s = new List<Type1>();
listType2s.ForEach(t => type1s.Add((new Type1(t))));
我大体上同意使用LINQ对这样的事情 - 但List<T>
已自.NET 2.0 ConvertAll
方法,实际上是略微更有效的(因为它已经知道大小):
List<Type1> type1s = listType2s.ConvertAll(t => new Type1(t));
我会可能使用LINQ自己未减少我有一个特别的原因不,因为那样它就可能与使用LINQ的其他代码一致。
我个人很喜欢:
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
其他不可告人的目的,如果我想。
+1:开溜!你输入的速度比我快。 – kbrimington 2010-08-03 20:47:03
@Randiolpho我认为这段代码显示了linq方法最清晰的意图,但不像使用内置方法那样清晰。再次感谢! – 2010-08-03 21:22:11
var type1s = listType2s.Select(o => new Type1(o)).ToList();
我觉得最明显的方法是以下
var type1s = listType2s.Select(x => new Type1(x)).ToList();
+1因为我也使用'x'。 – AMissico 2010-08-03 20:48:23
如果是向上转型,这是一个清晰,简明的成语:
List<SubType> list1 = GetListSubType();
List<BaseType> list2 = list1.OfType<BaseType>().ToList();
我认为这是最清晰和最有效的。 – 2010-08-03 21:20:44