简单的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);
我正在访问列表中的一些值以用这种方式填充字符串列表
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);