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