生成新记录时如何生成新号码?

时间:2019-04-17 11:04:04

标签: c#

我有任务。加载新的加载列表时需要生成编号的任务。我做了一个公式化器,其中的字段称为“ LoadingListNumber”。我需要的是以04/0001/19(月/ LoadingListNumber /年)格式生成此数字。新记录将加载数字0001。因此,如果您有新记录,它将是0001,另一个记录是0002,0010,等等。我知道如何生成月份和年份,但是不会生成此数字:/

我已经用这句话和年份生成了月份。

NumberOfLoadingList = string.Format(DateTime.Now.ToString("MM") + "/" + DateTime.Now.Year.ToString("YY"));

我真的需要技巧或建议,如何生成数字。谢谢。

2 个答案:

答案 0 :(得分:1)

使用padding和一个简单的loop在其中生成记录:

for(int i = 1; i < 100; i++)
{
    Console.WriteLine(i.ToString().PadLeft(4, '0'));
}

输出

0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
[...]
0099

答案 1 :(得分:0)

我会做的事情与ALFA建议的有所不同。

这是控制台应用程序的完整示例,但是我敢肯定,您可以在这里看到我要执行的操作。

using System;
using System.Collections.Generic;

public class Program
{
    // This is a list of all your previous numbers
    // this could come from database or calculated somewhere in your application
    private static List<int> numbersList = new List<int>(); 

    public static void Main()
    {
        string NumberOfLoadingList; 

        for(var i=0; i<10; i++)
        {
            NumberOfLoadingList = string.Format("{0}/{1:0000}/{2}", DateTime.Now.ToString("MM"), GenerateNewNumber(), DateTime.Now.ToString("yy"));
            Console.WriteLine(NumberOfLoadingList);
        }
    }

    private static int GenerateNewNumber()
    {
        int number = 0;

        while(true) 
        {
            // Make sure the number is unique
            if (!numbersList.Contains(++number)) 
            {
                numbersList.Add(number);
                return number;
            }

        }
    }
}

您可以在这里尝试:https://dotnetfiddle.net/mtT1MS

此应用程序的输出为:

04/0001/19
04/0002/19
04/0003/19
04/0004/19
04/0005/19
04/0006/19
04/0007/19
04/0008/19
04/0009/19
04/0010/19