/位数
int digit = 5;
//每一位再最大值如十进制就是10十六进制就是16=>f
int number = 10;
//关键解法
List> c = System.Linq.Enumerable.Repeat(System.Linq.Enumerable.Range(0, number), digit) .Aggregate(System.Linq.Enumerable.Repeat(new List(), number), (ir, ot) => ir.SelectMany(h => ot.Select(j => h.Concat(new List() { j }).ToList()))).ToList();
//验证
foreach (List a in c)
{
Console.Write(string.Join("",a) + "\r\n");
}
Console.Write(c.Count);
Console.ReadKey();
要求写出更简洁的写法,并且提供2个参数digit和number ,用一行linq实现,结贴给分
不知道number是干嘛的
Enumerable.Range(0, (int)Math.Pow(10.0,(double)digit) - 1).Where(x => x > (int)Math.Pow(10.0,(double)digit - 1))
回答错误:你这等于Enumerable.Range(10000,99999)回答无效没有这么简单你这样16进制怎么穷举Enumerable.Range(0, (int)Math.Pow(16.0,(double)digit) - 1)你去试下16转回来效率呢,我的接法可以穷举任何进制任意位数,我只是想找到一种跟简洁的解法