2012-02-20 3 views
0

Я следовал этомудекартово произведение динамического массива с помощью LINQ в C# перекидной OutOfMemory исключения

http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-cartesian-product-with-linq.aspx

и создал динамический запрос Linq для вычисления декартово произведения.

У меня есть 10 элементов массива, в каждом из которых есть 100 предметов.

A[100] B[100] C[100] . . . J[100]

Когда я пытаюсь вычислить декартово произведение моего А до J массива, я получаю OutOfMemoryException.

Я уверен, что кто-то уже столкнулся с подобной проблемой. Было бы здорово, если бы вы могли предоставить мне решение этой проблемы.

+1

Похоже, вы могли бы иметь 100^10 матчей, что примерно на 46,6 * миллиарда раз больше, чем int.MaxValue, например. –

+0

Да, я понял, я фактически сохранял результат комбинации в списке, который вызвал это исключение из-за исключения. Вместо того, чтобы хранить всю комбинацию, я сделал следующее, для каждой комбинации 10000 я беру лучший (на основе моей бизнес-логики), храня его в другом списке и очищая список комбинаций, это помогло мне решить мою проблему. – Esen

ответ

0

Я понял, что на самом деле я сохранил результат комбинации в списке, который вызвал это исключение из-за исключения. Вместо того, чтобы хранить всю комбинацию, я сделал следующее: для каждой комбинации 10000 я беру лучший (основанный на моей бизнес-логике), храня его в другом списке и очищая список комбинаций, это помогло мне решить мою проблему.

 Смежные вопросы

  • Нет связанных вопросов^_^