我想使用AddRange
将项目列表添加到现有列表中,而不是迭代。我的问题是,如果我添加到现有列表中的集合是lambda表达式,那么当我访问现有列表时,或者在此时添加到现有列表中的项目时,是否会重新评估它。
如果是前者那么我当然可以简单地使用.ToList()
来评估表达式。见下文:
_divisionsInGroup.AddRange(Event.Divisions.Where(x => x.SplitGroup == SplitGroup));
或者我需要
_divisionsInGroup.AddRange(Event.Divisions.Where(x => x.SplitGroup == SplitGroup).ToList());
修改 它似乎评估表达式并将项添加到列表中,因此不需要通过调用lambda上的ToList()来创建新的列表实例。
答案 0 :(得分:1)
AddRange
更改基础List对象。
_divisionsInGroup.AddRange(Event.Divisions.Where(x => x.SplitGroup == SplitGroup));
将更改_divisionsInGroup
。
.ToList())
,则应使用 List<T>
。
答案 1 :(得分:0)
无需在lambda上调用ToList(),表达式由AddRange方法计算,并且项目将附加到列表的末尾。