我有一个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>

09-25 22:01