加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 23:57:28 所属栏目:百科 来源:网络整理
导读:对于一个简单的例子,其中类foo有一个成员i,并且我有一组foos,比如IEnumerable Foo foos,我想最终得到foo的成员i的集合,比如List TypeOfi结果. 问题:是否最好使用foreach(下面的选项1)或某种形式的Linq(下面的选项2)或其他方法.或者,或许,它甚至不值得我自己
对于一个简单的例子,其中类foo有一个成员i,并且我有一组foos,比如IEnumerable< Foo> foos,我想最终得到foo的成员i的集合,比如List< TypeOfi>结果.

问题:是否最好使用foreach(下面的选项1)或某种形式的Linq(下面的选项2)或其他方法.或者,或许,它甚至不值得我自己(仅选择我个人的偏好).

选项1:

foreach (Foo foo in foos)
    result.Add(foo.i);

选项2:

result.AddRange(foos.Select(foo => foo.i));

对我来说,选项2看起来更干净,但我想知道Linq是否因为这么简单的foreach循环可以实现的东西太过沉重.

寻找所有意见和建议.

解决方法

我更喜欢第一种选择.但是,除非有理由预先创建List< T>.并使用AddRange,我会避免它.就个人而言,我会使用:

List<TypeOfi> results = foos.Select(f => f.i).ToList();

另外,我不一定会使用ToList(),除非你真的需要一个真正的List< T>,或者需要强制执行立即而不是延迟.如果你只需要迭代“i”值的集合,我会简单地使用:

var results = foos.Select(f => f.i);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读