假设这两个代码:
1)使用foreach添加新列表
var myList = new List<MyType>();
foreach(var myType in otherEntity.ListOfMyType) {
myList.Add(new MyType {
//... copy properties here
});
}
2)使用select
var myList = otherEntity.ListOfMyType.Select(myType => new MyType {
//... copy properties here
});
使用select还存在其他优势,而不是可读性吗?
答案 0 :(得分:2)
这两段代码之间的主要区别是延迟执行:
List<MyType>
在内存中完全“物化”IEnumerable<MyType>
,没有记忆如果您决定将myList
枚举到中间,则第二个解决方案将根据需要构建任意数量的条目,而第一个构造将提前创建每个MyType
对象。
另一方面,列表使得多个枚举在CPU周期方面可能更加昂贵。