简单的foreach,首选方式

Simple foreach, preferred way

我正在访问列表中的一些值以用这种方式填充字符串列表

List<string> carNames = null;
foreach (var car in dal.Cars)
{
    carNames.Add(car.Name);
}

有没有更有效的方法,而且可读性强?你会怎么做?

"Is there a more efficient way"

更有效的通常是微优化,并且大多数时候会降低可读性。但是,优化性能的一种方法是使用正确的容量初始化列表,您已经知道这一点,因为 dal.Cars 也是一个列表:

List<string> carNames = new List<string>(dal.Cars.Count);
carNames.AddRange(dal.Cars.Select(c => c.Name));

旁注:我真的很奇怪为什么微软没有为占用容量的 ToList/ToArray/ToHashSet 添加重载。然后你可以使用这个(不编译):

List<string> carNames = dal.Cars.Select(c => c.Name).ToList(dal.Cars.Count);