Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用客户名称和年份生成参考号?_C#_String_Winforms_Int - Fatal编程技术网

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

C# 如何使用客户名称和年份生成参考号?,c#,string,winforms,int,C#,String,Winforms,Int,我想根据客户姓名和出生日期生成一个唯一的号码 如果我的客户名字是钱德拉·谢卡尔,他的出生日期是28/12/1990 我想要类似于xxxx-1990的东西 xxxx应该是一个基于客户名称生成的数字 如何从字符串值生成数字 谢谢。如果您只需要从字符串生成一个数字,您可以使用: 请注意,这并不能保证您的号码的唯一性。请尝试使用这样的代码 var yr = DateTime.Parse("28/12/1990" , new CultureInfo("en-US")).Year; var custName

我想根据客户姓名和出生日期生成一个唯一的号码

如果我的客户名字是钱德拉·谢卡尔,他的出生日期是
28/12/1990

我想要类似于xxxx-1990的东西

xxxx
应该是一个基于客户名称生成的数字

如何从字符串值生成数字


谢谢。

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


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

请尝试使用这样的代码

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

希望它能对您有所帮助。

如果您需要立即保证唯一性,这是一个棘手的问题。任何试图将字符串转换为“小”数字的方案(在信息方面总是比原始字符串小的方案)都会遇到可能的冲突

所以这取决于你的需求。如果您以后需要能够可靠地生成此ID,那么只需通过算法给出名称和编号,您就有问题了

另一方面,如果您可以将“姓名、出生日期、生成的ID”存储在某个表中,那么您可以从使用某种形式的散列开始(我不建议使用
GetHashCode
,因为不能保证它会随时间保持稳定,但一些常见的加密散列应该可以)然后在表格中查找结果。你也可以使用另一个零件来实现独特性。例如,如果“Fred Blogs”的哈希值为1234,那么“Jim Smith”的哈希值也为1234,那么您可能会得到:

Fred Blogs => 1234-0-1990
Jim Smith =>  1234-1-1990

但是,如果你处于这种情况,你可以考虑只生成一个全局唯一ID。这一切都是关于在你试图解决它们之前先制定出确切的需求。正如我所说,你应该放弃“一个独一无二的数字”的想法——这是注定要失败的


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

这些值是从哪里来的?您是指您的数据库吗?假设
birth
是DateTime:
string yr=birth.Year.ToString()
;到目前为止你试过什么吗?首先展示你的努力。你是否需要能够从年份+名称中获取此数字,并知道它正是最初生成的数字?如果人数不多,那就很难做到。。。任何生成“小”数字的方案(如GetHashCode)都可能会遇到冲突。您是否使用mysql重新修改名称和DOB?绝对不是。哈希代码不能保证唯一性。对不起,我刚才回答“如何从字符串值生成数字?”那么让我们更简单,使用
customerName.Length
-这是从字符串生成数字,不是吗?问题开始于:“我想生成一个唯一的数字…”嗯,散列码通常非常适合将某些东西存储到字典中,不是吗?字符串长度不正确。在这种情况下,我认为我的答案可能会有所帮助。哈希代码只适用于字典,因为在冲突中也可以使用Equals。如果你试图生成一个唯一的ID,它们就不起作用。这不会生成一个作为第一部分的数字。不,那仍然是“Chandra shekar-1990”,这不是OP想要的。。。
Fred Blogs => 1234-0-1990
Jim Smith =>  1234-1-1990