从集合中收集数据时,我应该使用简单的foreach或Linq吗?

Mat*_*ith 3 c#

对于一个简单的案例,哪里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循环可以实现的东西太过沉重.

寻找所有意见和建议.

Ree*_*sey 6

我更喜欢第一种选择.但是,除非有理由预先创建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)