C# 转换通用列表的代码清晰度?
此代码应将listType2s列表(list)转换为type1s列表。但我觉得功能有点难以确定 我希望看到更容易阅读、更简洁、更简洁的替代方法C# 转换通用列表的代码清晰度?,c#,.net,linq,linq-to-sql,C#,.net,Linq,Linq To Sql,此代码应将listType2s列表(list)转换为type1s列表。但我觉得功能有点难以确定 我希望看到更容易阅读、更简洁、更简洁的替代方法 List<Type1> type1s = new List<Type1>(); listType2s.ForEach(t => type1s.Add((new Type1(t)))); List type1s=新列表(); listType2s.ForEach(t=>type1s.Add((
List<Type1> type1s = new List<Type1>();
listType2s.ForEach(t => type1s.Add((new Type1(t))));
List type1s=新列表();
listType2s.ForEach(t=>type1s.Add((新的Type1(t)));
我个人喜欢:
var type1s = (from item in listType2s select new Type1(item)).ToList();
我应该说,我实际上更喜欢
但这主要是因为如果我想的话,我可以将qry
用于其他邪恶的目的 我个人喜欢:
var type1s = (from item in listType2s select new Type1(item)).ToList();
var type1s = listType2s.Select(o => new Type1(o)).ToList();
我应该说,我实际上更喜欢
但这主要是因为如果我想的话,我可以将
qry
用于其他邪恶的目的 我认为最清晰的方法是
var type1s = listType2s.Select(o => new Type1(o)).ToList();
var type1s = listType2s.Select(x => new Type1(x)).ToList();
我认为最清晰的方法是
var type1s = listType2s.Select(x => new Type1(x)).ToList();
我大体上同意使用LINQ来处理这类事情,但是自从.NET 2.0以来,
List
已经有了一个ConvertAll
方法,它实际上会稍微高效一些(因为它已经知道了大小):
List type1s=List type2s.ConvertAll(t=>newtype1(t));
我可能会自己使用LINQ,除非我有特别的理由不使用,因为它与其他可能也会使用LINQ的代码是一致的。我一般同意使用LINQ来处理这类事情-但是
List
自.NET 2.0以来有了一个ConvertAll
方法,它实际上会稍微更有效(因为它已经知道大小):
List type1s=List type2s.ConvertAll(t=>newtype1(t));
除非我有特别的理由不使用LINQ,否则我可能会自己使用LINQ,因为它与可能也会使用LINQ的代码的其余部分一致。如果您是向上转换,这是一个清晰简洁的习惯用法:
List<SubType> list1 = GetListSubType();
List<BaseType> list2 = list1.OfType<BaseType>().ToList();
List list1=GetListSubType();
List list2=list1.OfType().ToList();
如果你是向上投射,这是一个清晰简洁的习惯用法:
List<SubType> list1 = GetListSubType();
List<BaseType> list2 = list1.OfType<BaseType>().ToList();
List list1=GetListSubType();
List list2=list1.OfType().ToList();
@Randiolpho我认为这段代码显示了linq方法中最清晰的意图,但没有使用内置方法那么清晰。再次感谢@Randiolpho我认为这段代码显示了linq方法中最清晰的意图,但没有使用内置方法那么清晰。再次感谢!