2012-02-20 37 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]

當我試圖計算我的A至J陣列的笛卡爾積,我得到OutOfMemoryException異常。

我相信有人已經可能面臨類似的問題。如果你能爲我提供這個問題的解決方案,那將是非常好的。

+1

在我看來,你可以有100^10個匹配,比int.MaxValue多約46.6 * 10億倍。 – 2012-02-20 15:20:29

+0

是的,我想通了,我實際上是將組合結果存儲在一個列表中,導致這種內存異常。 而不是存儲所有的組合,我做了以下,每10000組合我採取最好的(根據我的業務邏輯)存儲在不同的列表中,並清理組合列表,它幫助我解決了我的問題。 – Esen 2012-02-20 17:23:47

回答

0

我明白了,我實際上是將組合結果存儲在一個導致這種超出內存異常的列表中。我沒有存儲所有組合,而是按照以下方式進行:每10000個組合採用最佳組合(基於我的業務邏輯)將其存儲在不同的列表中,並清理組合列表,這有助於我解決問題。

相關問題