在null
中将属性(任何一个)设置为IEnumerable
的最快方法是什么? foreach
是我唯一的选择吗?
答案 0 :(得分:7)
如果您有一个非常大的列表,您可以考虑并行执行此操作:
enumerable.AsParallel().ForAll(a => a.Value = null);
但是值得基准测试并考虑到你的对象现在需要线程安全。
快速测试此处在列表大小超过1000万件*时显示投资回报率。较低的列表大小和设置并行处理的成本超过了好处。
*您的里程 会改变
答案 1 :(得分:1)
实现目标有两种方法:
如你所说:
foreach(var item in enumeration)
{
item.Property = null;
}
您也可以使用LINQ:
enumeration.ToList().ForEach(item => item.Property = null);
虽然第二种方式看起来更短且更易读,但它可能执行得更慢,因为正如Jeppe Stig Nielsen指出的那样,IEnumerable
被转换为List
(第一次枚举)并且该列表再次枚举,最终设置属性。
因此你是对的:foreach
是你唯一的选择。但是foreach
- 表示看起来像,你总是需要遍历集合来修改每个项目。