LINQ/From-Select vs ForEach
本文关键字:ForEach vs From-Select LINQ | 更新日期: 2023-09-27 18:12:32
我在这里和其他地方做了一些搜索,但无法准确找到我要问的。这段代码来自我正在研究的一些示例代码。
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));
}
}
我的理解正确吗?
不,代码段是不相等的。由于多种不同的原因,第二个代码片段无法编译。您没有定义region
, ReadOnlyCollection<T>
没有无参数构造函数,ReadOnlyCollection<T>
没有Add
方法。由于第一个代码片段编译并成功创建了ReadOnlyCollection<RegionViewModel>
,因此它不会做同样的事情。
是。这两个代码段实现了相同的目标(除了语法上的小问题),在概念上它们将具有相同的最终结果。
然而,可能存在性能差异,我无法评论。我不太了解c#的内部工作原理,但我怀疑LINQ语句会产生更好的性能。不过,我可能完全错了。
编辑:我上面的语句假设了一个正常的Collection,而不是ReadOnlyCollection,因为我错过了这个细节。我收回我的声明。第一个代码示例是唯一可以在这里工作的,因为该结构是ReadOnly。