【发布时间】:2017-03-03 17:40:34
【问题描述】:
假设这两个代码:
1) 使用 foreach 和 Add in new list
var myList = new List<MyType>();
foreach(var myType in otherEntity.ListOfMyType) {
myList.Add(new MyType {
//... copy properties here
});
}
2) 使用选择
var myList = otherEntity.ListOfMyType.Select(myType => new MyType {
//... copy properties here
});
除了可读性之外,使用 select 代替 foreach 还有其他优势吗?
【问题讨论】:
-
在您的情况下,两段代码之间几乎没有区别。可能会有一些非常小的性能差异(小到我怀疑你会注意到)。所以,是的,我认为这取决于可读性。
-
Select是惰性的并返回更通用的类型(IEnumerable<T>而不是List<T>),这可能是一个优势。 -
@Lee:我不得不承认,考虑到变量的名称,我只是假设最后会有一个 ToList() 调用被遗漏了。我可能应该检查一下。 :)