我有一个foreach循环,该循环读取一种类型的对象列表并生成另一种类型的对象列表。有人告诉我,lambda表达式可以达到相同的结果。
var origList = List<OrigType>(); // assume populated
var targetList = List<TargetType>();
foreach(OrigType a in origList) {
targetList.Add(new TargetType() {SomeValue = a.SomeValue});
}
任何帮助将不胜感激-我是lambda和linq的新手
谢谢,
s
最佳答案
尝试以下
var targetList = origList
.Select(x => new TargetType() { SomeValue = x.SomeValue })
.ToList();
这是结合使用Lambda和LINQ来实现的。 Select函数是一种投影样式方法,它将传入的委托(delegate)(在本例中为lambda)应用于原始集合中的每个值。结果将以新的
IEnumerable<TargetType>
返回。 .ToList调用是一个扩展方法,它将将此IEnumerable<TargetType>
转换为List<TargetType>
。