LINQ / From-Select vs ForEach

时间:2016-10-11 17:58:13

标签: c# linq

我在这里和其他地方做了一些搜索,但无法找到我正在问的问题。我通过一些示例代码完成了这段代码。

 public CountryViewModel(Region[] regions)
    {
        _regions = new ReadOnlyCollection<RegionViewModel>(
            (from region in regions
             select new RegionViewModel(region))
            .ToList());
    }

我相信以上内容相当于:

  public CountryViewModel(Region[] regions)
    {
        _regions = new ReadOnlyCollection<RegionViewModel>();
        foreach (region in regions)
        {  
            _regions.Add(new RegionViewModel(region)); 
        }
    }

我的理解是否正确?

2 个答案:

答案 0 :(得分:3)

不,代码片段不相同。第二个片段由于多种原因而无法编译。您尚未定义regionReadOnlyCollection<T>没有无参数构造函数,ReadOnlyCollection<T>没有Add方法。由于第一个代码段编译并成功创建了ReadOnlyCollection<RegionViewModel>,因此它不会做同样的事情。

答案 1 :(得分:-1)

是。这两个片段都实现了相同的目标(除了轻微的语法问题),概念它们将具有相同的最终结果。

但是,可能存在我无法评论的性能差异。我对C#的内部工作没有很好的工作知识,但我怀疑LINQ语句会产生更好的性能。尽管如此,我可能完全错误。

修改 我上面的陈述假定了一个正常的集合,而不是一个ReadOnlyCollection,因为我错过了这个细节。我撤回了我的陈述。第一个代码示例是唯一可以在这里工作的示例,因为该结构是ReadOnly。