C# 按顺序生成订单号
我有一个要求,我需要生成一个顺序编号,而不是随机的,应该显示给用户之前,给订单C# 按顺序生成订单号,c#,C#,我有一个要求,我需要生成一个顺序编号,而不是随机的,应该显示给用户之前,给订单 private string GenerateOrderNumber() { string OrderNumber; //JI-XXXXXXXXX-XXXX Random rnd = new Random(); long orderPart1 = rnd.Next(100000, 9999999); int or
private string GenerateOrderNumber()
{
string OrderNumber;
//JI-XXXXXXXXX-XXXX
Random rnd = new Random();
long orderPart1 = rnd.Next(100000, 9999999);
int orderPart2 = rnd.Next(1000, 9999);
OrderNumber = "JI-" + orderPart1 + "-" + orderPart2;
return OrderNumber;
}
那么:
long orderPart1 = 100000;
int orderPart2 = 1000;
Debug.WriteLine(string.Format("JI-{0}-{1}", orderPart1, orderPart2));
orderPart2++;
Debug.WriteLine(string.Format("JI-{0}-{1}", orderPart1, orderPart2));
orderPart2 = 9999;
if(orderPart2 == 9999)
{
orderPart1++;
orderPart2 = 1000;
}
Debug.WriteLine(string.Format("JI-{0}-{1}", orderPart1, orderPart2));
哪些产出:
JI-100000-1000
JI-100000-1001
JI-100001-1000
JI-100000-1000
JI-100000-1001
因此,您可以创建一个类:
void Main()
{
OrderNumberGenerator orderNumberGenerator = new OrderNumberGenerator();
Debug.WriteLine(orderNumberGenerator.Next());
Debug.WriteLine(orderNumberGenerator.Next());
}
// Define other methods and classes here
public class OrderNumberGenerator
{
long orderPart1 = 100000;
int orderPart2 = 1000;
public string Next()
{
if(orderPart2 == 9999)
{
orderPart1++;
orderPart2 = 1000;
}
else
{
orderPart2++;
}
return string.Format("JI-{0}-{1}", orderPart1, orderPart2);
}
}
哪些产出:
JI-100000-1000
JI-100000-1001
JI-100001-1000
JI-100000-1000
JI-100000-1001
以下是如何按顺序生成所有ID:
for (long n = 0; n <= 9999999999; n++)
{
string digits = n.ToString("0000000000");
string output = $"JI-{digits.Substring(0, 6)}-{digits.Substring(6, 4)}";
Console.WriteLine(output);
}
好啊有问题吗?我想为下一个订单JI-000000-002生成序列号JI-000000-0001这不是问题,这是要求。请把它变成一个真实的问题。你说不是随机的,但你的代码会生成随机数,那么它是哪一个?如果假设它不是随机的,那么最大范围是多少?是JI-9999999-9999还是只有JI-000000-9999这将从JI-0000-000000开始,我猜@mohamad damaj3想要从JI-1000-100000开始。。。我这样说是因为rnd.Next值。在他的一篇评论中,他写了JI-000000-0001,所以谁知道呢。@LeonardoSeccia-将n=0改为n=1并不太难。