2016-07-15 101 views
-2

我想要使用AddRange将项目列表添加到现有列表中,而不是迭代。我的问题是,如果我添加到现有列表中的集合是一个lambda表达式,那么当我访问现有列表时,是否会重新评估该列表,或者是否在此时添加到现有列表中的项目。 如果前者那么我当然可以简单地使用.ToList()来评估表达式。见下图:使用lambda表达式将范围添加到现有列表

_divisionsInGroup.AddRange(Event.Divisions.Where(x => x.SplitGroup == SplitGroup)); 

还是需要

_divisionsInGroup.AddRange(Event.Divisions.Where(x => x.SplitGroup == SplitGroup).ToList()); 

编辑: 这似乎计算表达式,并添加项目到列表中,因此没有必要创建一个新的列表实例通过在lambda上调用ToList()。

+2

我正在投票结束这个问题作为题外话,因为试试看,并找出答案。 –

回答

0

不需要调用lambda表达式上的ToList(),该表达式由AddRange方法计算并将项目附加到列表的末尾。

1

AddRange更改基础List对象。

_divisionsInGroup.AddRange(Event.Divisions.Where(x => x.SplitGroup == SplitGroup));

将改变_divisionsInGroup

.ToList())如果您想进一步将其转换为List<T>,应该使用它。