如何使用客户名称和年份生成参考编号

本文关键字:参考 编号 何使用 客户 | 更新日期: 2023-09-27 18:09:51

我想根据客户姓名和出生日期生成一个唯一的数字。

如果我的客户名字是Chandra shekar,他的出生日期是28/12/1990

我想要xxxx-1990

xxxx为根据客户名称生成的数字。

如何从字符串值生成数字?

谢谢。

如何使用客户名称和年份生成参考编号

如果您需要能够立即保证唯一性,这是很棘手的。任何试图将字符串转换为"小"数(在信息方面总是比原始字符串小)的方案总是会遭受可能的冲突。

所以这取决于你的需求。如果你需要能够可靠地生成这个ID以后给名字和数字纯粹的算法,你有一个问题。

另一方面,如果您可以在某个表中存储"姓名,出生日期,生成的ID",那么您可以从使用某种形式的哈希开始(我不建议使用GetHashCode,因为不能保证它会随着时间的推移保持稳定,但是一些常见的加密哈希应该很好),然后在表中查找结果。你也可以用另一部分来表示唯一性。例如,如果"Fred Blogs"的哈希值是1234,"Jim Smith"的哈希值也是1234,那么您可能会得到:
Fred Blogs => 1234-0-1990
Jim Smith =>  1234-1-1990

但是,如果你在那种情况下,你可以考虑只生成一个全局唯一的ID开始。这一切都是关于在你试图解决它们之前,找出确切的需求。就像我说的,你应该放弃"一个唯一的数字"的想法——这是注定的,因为鸽子洞原理。

正如Habib所提到的,您还需要考虑多个具有相同姓名和出生日期的客户的可能性。

如果您需要的只是从字符串生成一个数字,您可以使用GetHashCode():

var customerName = "John Smith";
var yourReferenceNumber = customerName.GetHashCode();

请注意,这并不能保证您的号码的唯一性。

尝试使用如下代码

var yr = DateTime.Parse("28/12/1990" , new CultureInfo("en-US")).Year;
var custName = "Chandra shekar";
var result = custName + yr ;
Console.WriteLine(result);

希望对你有帮助