Декартово произведение динамического массива с использованием исключения linq С# throw 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]

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

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


person Esen    schedule 20.02.2012    source источник
comment
Мне кажется, что у вас может быть 100 ^ 10 совпадений, что примерно в 46,6 миллиардов раз больше, чем, например, int.MaxValue.   -  person Anthony Pegram    schedule 20.02.2012
comment
да, я понял, я действительно сохранял результат комбинации в списке, который вызвал это исключение нехватки памяти. Вместо того, чтобы хранить всю комбинацию, я сделал следующее: из каждой комбинации 10000 я беру лучшую (на основе моей бизнес-логики), сохраняю ее в другом списке и очищаю список комбинаций, это помогло мне решить мою проблему.   -  person Esen    schedule 20.02.2012


Ответы (1)


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

person Esen    schedule 10.05.2012