对于一个简单的案例,哪里class foo有一个成员i,我有一个foos的集合,比方说IEnumerable<Foo> foos,我想最终得到一个foo成员的集合i,比方说List<TypeOfi> result.
问题:是否最好使用foreach(下面的选项1)或某种形式的Linq(下面的选项2)或其他方法.或者,或许,它甚至不值得我自己(仅选择我个人的偏好).
选项1:
foreach (Foo foo in foos)
result.Add(foo.i);
Run Code Online (Sandbox Code Playgroud)
选项2:
result.AddRange(foos.Select(foo => foo.i));
Run Code Online (Sandbox Code Playgroud)
对我来说,选项2看起来更干净,但我想知道Linq是否因为这么简单的foreach循环可以实现的东西太过沉重.
寻找所有意见和建议.
我更喜欢第一种选择.但是,除非有理由预先创建List<T>和使用AddRange,否则我会避免使用它.就个人而言,我会使用:
List<TypeOfi> results = foos.Select(f => f.i).ToList();
Run Code Online (Sandbox Code Playgroud)
另外,ToList()除非你确实需要一个true List<T>,否则我不一定会使用它,或者需要强制执行立即而不是延迟执行.如果你只需要迭代"i"值的集合,我会简单地使用:
var results = foos.Select(f => f.i);
Run Code Online (Sandbox Code Playgroud)