使用字母和数字生成序列号

时间:2012-05-29 10:34:32

标签: c# uniqueidentifier autonumber

我正在开发一个在C#和DevExpress中接受订单的应用程序,我需要一个生成唯一订单号的函数。订单号必须包含字母和数字,长度为20 .. 我见过像Guid.NewGuid()这样的东西,但我不希望它是完全随机的,也不仅仅是一个自动增量数字..

有人可以帮忙吗?即使它是一个不同语言的剧本,我也需要拼命思考:)

6 个答案:

答案 0 :(得分:1)

您可以创建自己的类型。 让我们说yyyyMMddWWW-YYY-XXXXXXX其中WWW是商店号码,YYY收银员ID XXXXXXX是十六进制数字( - >可能是你把它变成十六进制的实际自动增量数字)。这只是一个想法。我担心你必须根据系统的要素来决定它是什么。

编辑:如果你可以应用校验位算法也有助于避免错误

答案 1 :(得分:0)

两种不同的方法:

  • 创建当前时间的MD5或SHA1哈希
  • 增量号的哈希

答案 2 :(得分:0)

就像奥德建议的那样,Guid不是随机的(好吧,如果你有网卡的话)。它基于时间和位置坐标。有关详细说明,请参阅Raymond Chens blog post 您最好使用自动递增的int作为订单ID。我不明白为什么你不想使用它或者没有使用Guid?

除了自动ID以外,我无法想到保持唯一性并代表系统中不同订单的顺序。

答案 3 :(得分:0)

想到了一个想法。
取DateTime.Now.Ticks将其转换为十六进制字符串 瞧,String.Format("{0:X}", value);
如果时间不够,你说你需要20个数字,你总是可以用零填充。

答案 4 :(得分:0)

  1. 获取主板ID
  2. 获取硬盘ID
  3. 以任何方式合并
  4. 添加密码
  5. 申请MD5
  6. 申请Base54
  7. 结果:链接到当前客户端PC的串行代码:)

答案 5 :(得分:0)

我的两分钱。

如果您需要提问,请查看LuhnLuhn mod N算法。

虽然这些算法不是唯一的代码生成器,但它们可能会为您提供有关如何生成可以验证的代码的一些想法(这样您可以在将代码发送到数据库之前验证代码的正确性)。