用一行linq穷举一个n位数,q

/位数

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实现,结贴给分

2个回答

不知道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转回来效率呢,我的接法可以穷举任何进制任意位数,我只是想找到一种跟简洁的解法

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!