我正在开发一个在C#和DevExpress中接受订单的应用程序,我需要一个生成唯一订单号的函数。订单号必须包含字母和数字,长度为20 .. 我见过像Guid.NewGuid()这样的东西,但我不希望它是完全随机的,也不仅仅是一个自动增量数字..
有人可以帮忙吗?即使它是一个不同语言的剧本,我也需要拼命思考:)
答案 0 :(得分:1)
您可以创建自己的类型。 让我们说yyyyMMddWWW-YYY-XXXXXXX其中WWW是商店号码,YYY收银员ID XXXXXXX是十六进制数字( - >可能是你把它变成十六进制的实际自动增量数字)。这只是一个想法。我担心你必须根据系统的要素来决定它是什么。
编辑:如果你可以应用校验位算法也有助于避免错误
答案 1 :(得分:0)
两种不同的方法:
答案 2 :(得分:0)
就像奥德建议的那样,Guid不是随机的(好吧,如果你有网卡的话)。它基于时间和位置坐标。有关详细说明,请参阅Raymond Chens blog post 您最好使用自动递增的int作为订单ID。我不明白为什么你不想使用它或者没有使用Guid?
除了自动ID以外,我无法想到保持唯一性并代表系统中不同订单的顺序。
答案 3 :(得分:0)
想到了一个想法。
取DateTime.Now.Ticks将其转换为十六进制字符串
瞧,String.Format("{0:X}", value);
如果时间不够,你说你需要20个数字,你总是可以用零填充。
答案 4 :(得分:0)
结果:链接到当前客户端PC的串行代码:)
答案 5 :(得分:0)
我的两分钱。
如果您需要提问,请查看Luhn和Luhn mod N算法。
虽然这些算法不是唯一的代码生成器,但它们可能会为您提供有关如何生成可以验证的代码的一些想法(这样您可以在将代码发送到数据库之前验证代码的正确性)。