如何将List<A>的每个元素通过convertAtoB函数转换为List<B>?
解决List转List的问题
你用Foreach的问题在于:List<T>.Foreach()方法仅用于遍历列表执行指定操作,它没有返回值,因此无法直接通过它生成新的List<B>。下面是几种可行的解决方案:
方法1:使用LINQ的Select(最简洁)
先引用System.Linq命名空间,通过Select转换每个元素后,调用ToList()生成目标列表:
List<B> ListB = ListA.Select(a => convertAtoB(a)).ToList();
如果习惯匿名委托写法,也可以写成:
List<B> ListB = ListA.Select(delegate(A a) { return convertAtoB(a); }).ToList();
方法2:使用List原生的ConvertAll方法
List<T>自带的ConvertAll方法专门用于元素类型转换,无需依赖LINQ:
List<B> ListB = ListA.ConvertAll(a => convertAtoB(a));
同样支持匿名委托写法:
List<B> ListB = ListA.ConvertAll(delegate(A a) { return convertAtoB(a); });
方法3:手动循环(直观可控)
如果需要在转换过程中添加额外逻辑(比如异常判断、条件过滤),可以手动遍历并添加元素:
List<B> ListB = new List<B>(); foreach (A a in ListA) { // 可在此添加额外处理逻辑,例如判断元素是否有效 ListB.Add(convertAtoB(a)); }
内容的提问来源于stack exchange,提问作者Proof of Concept
相关产品推荐
相关产品推荐

