如何插入YYMMDD + 4位作为ID

时间:2015-02-12 07:35:03

标签: c# linq

在linq我知道自动编号生成是:
 ID = Guid.NewGuid().ToString();
但是我希望将我的ID保存为YYMMDD + 4位数 例如:2015/2/12「1502120001」~[1502129999」

2 个答案:

答案 0 :(得分:1)

问题不明确。请澄清您的问题并添加其他详细信息和上下文代码。 你在哪里需要这些ID?你会把它们保存到数据库中吗?如果您在一天内申请的身份超过9999次会怎么样?如果重新启动应用程序会发生什么?

这是一个非常简单的实现:

public static class IdGenerator
{
    private static int lastId = 0;
    private static DateTime lastDate = DateTime.Now;

    public static string NewId()
    {
        // If last used date is different than today or last id is 9999 restart the counter.
        if (lastDate.Date != DateTime.Now.Date || lastId == 9999)
            lastId = 0;

        lastDate = DateTime.Now;
        return string.Format("{0:yyMMdd}{1:0000}", lastDate, ++lastId);
    }
}

// Usage
IdGenerator.NewId()

请注意,如果您在一天内请求ID超过9999次或重新启动应用程序,则此类不保证唯一ID。您应该为最后使用的id和最后使用的日期(不是静态成员)使用一些持久存储。

答案 1 :(得分:0)

Random random = new Random();
string ID = DateTime.Today.ToString("yyMMdd") + random.Next(1, 9999).ToString().PadLeft(4, '0');

当然,对于这样的ID生成器,如果在生成新ID之后已经存在具有该ID的项目并生成新ID,则必须检查,直到找到唯一ID。此外,您只能创建9999个唯一ID,因此最好确保符合您的需求。

我认为你最好只使用Guids。