Joh*_*ohn 8 c# ienumerable list addrange deferred
我有以下场景,我想在列表中添加一些项目...
List<T> items = new List<T>();
IEnumerable<T> addItems = someCollection.Where(...);
items.AddRange(addItems);
Run Code Online (Sandbox Code Playgroud)
使用此代码,列表中不会添加任何项目,但如果我在Linq语句之后添加.ToList(),则会正确添加项目.我想这是由于延迟执行,但我想如果List.AddRange函数接受一个IEnumerable,它将枚举要添加的项目.
有人可以清楚为什么会这样吗?
感谢您的回复。我尝试简化此示例的代码,但像往常一样,问题在于细节!
在 .Where() 语句和 AddRange() 调用之间,代码(深层)清除了源(本例中为“items”)列表。开发人员没有意识到过滤器被推迟到 AddRange() 调用,此时他们已经清除了源列表。
很高兴知道我没有失去情节:)