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并不太难。