5
可能重複:
Generating all Possible CombinationsN-Enumerables在LINQ聲明中?
我不知道如何短語的問題;但我正在研究一個愚蠢的邏輯謎題,我可以使用LINQ語句來解決這個難題。相關代碼如下所示:
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
from myD in Enumerable.Range(1, 40)
where myA + myB + myC + myD == 40
&& myA <= myB
&& myB <= myC
&& myC <= myD
select new[] {myA, myB, myC, myD})
因此,它基本上生成符合Where子句中的條件的A,B,C D的所有組合。
我現在想要做的是概括這個,所以我可以用N值而不是4來做同樣的事情。例如,3個值 - 等價代碼如下:
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
where myA + myB + myC == 40
&& myA <= myB
&& myB <= myC
select new[] {myA, myB, myC})
當然,我不希望修改代碼 - 我想,我可以打電話,並提供一個整數,並將它返回正確的函數目的。
我做了一些錯誤的嘗試;但我真的不知道該怎麼做。有人能指引我朝着正確的方向嗎?
埃裏克利珀[博客上這個(http://blogs.msdn.com/b/ericlippert/archive/2010/06/28/computing-a-cartesian- product-with-linq.aspx)關於計算許多序列的產品。它可能有幫助。 – 2012-02-01 20:52:01
@AnthonyPegram - 這是完美的。正是我在找什麼。如果你想發佈這個答案,我會接受它。 – 2012-02-01 20:55:14
這不是我的*答案。 ;)如果您希望在信用到期時給予抵免,請[嘗試此處](http://stackoverflow.com/a/3098381/414076) – 2012-02-01 20:56:57