【发布时间】:2012-07-29 20:15:17
【问题描述】:
我有以下场景,我想将一些项目添加到列表中......
List<T> items = new List<T>();
IEnumerable<T> addItems = someCollection.Where(...);
items.AddRange(addItems);
使用此代码,不会将任何项目添加到列表中,但如果我在 Linq 语句之后添加 .ToList() 则项目会正确添加。我猜这是由于延迟执行,但我认为鉴于 List.AddRange 函数接受一个 IEnumerable,它会枚举要添加的项目。
有人能解释一下为什么会这样吗?
【问题讨论】:
-
你怎么看“没有添加项目”,因为它应该添加项目?
-
someCollection 的类型是什么?请提供实际工作的代码,我不太确定需要在哪里添加 ToList。是否 someCollection IQueryable 以及是否可能存在未正确实施的 Linq 提供程序?
标签: c# list ienumerable deferred addrange