解決策としてこれはどうですか:
var numerals = Enumerable.Range(1, 9).ToArray();
var query =
from n1 in numerals
from n2 in numerals.Except(new [] { n1, })
from n3 in numerals.Except(new [] { n1, n2, })
from n4 in numerals.Except(new [] { n1, n2, n3, })
from n5 in numerals.Except(new [] { n1, n2, n3, n4, })
from n6 in numerals.Except(new [] { n1, n2, n3, n4, n5, })
from n7 in numerals.Except(new [] { n1, n2, n3, n4, n5, n6, })
from n8 in numerals.Except(new [] { n1, n2, n3, n4, n5, n6, n7, })
from n9 in numerals.Except(new [] { n1, n2, n3, n4, n5, n6, n7, n8, })
select n1 * 100000000
+ n2 * 10000000
+ n3 * 1000000
+ n4 * 100000
+ n5 * 10000
+ n6 * 1000
+ n7 * 100
+ n8 * 10
+ n9;
これは非常に高速であり、私のコンピューターでは 864 ミリ秒ですべての結果が生成されます。
最初の 10 件の結果は次のとおりです。
123456789
123456798
123456879
123456897
123456978
123456987
123457689
123457698
123457869
123457896