我有一个IEnumerable
我想对其进行处理的对象。但是当集合变得太大时,它会OutOfMemoryException
在枚举它时抛出一个,例如在调用Count()
.
显而易见的解决方案是将集合拆分为多个部分,以使每个部分都不会太大。但我不知道每个部分中理想的对象数量是多少,并且我想避免“幻数”,因为我不知道每个对象的潜在大小。我什至不知道将它分成多个部分是否是一个好的解决方案。有任何想法吗?
编辑:
在我的代码中,我有这个功能。请注意将Select
项目MyData
放入包装对象的集合中,这会增加大小。当枚举这个集合时,我得到了异常(我可以messages.Select(m => new CloudQueueMessage(m.ToBinary())).ToList()
立即得到异常)。
public static void AddMessages(IEnumerable<MyData> messages)
{
DoStuff(messages.Select(m => new CloudQueueMessage(m.ToBinary())));
}