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())));
}