Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.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#_Linq_Random - Fatal编程技术网

C# 基于时间刻度的唯一、不重复的字母数字代码

C# 基于时间刻度的唯一、不重复的字母数字代码,c#,linq,random,C#,Linq,Random,我有一个我从中获得的功能,非常有用: private string GenerateTransactionCode() { var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; var random = new Random(); var result = new string( Enumerable.Repeat(chars, 8) .Select(s => s[

我有一个我从中获得的功能,非常有用:

private string GenerateTransactionCode()
{
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
    var random = new Random();
    var result = new string(
        Enumerable.Repeat(chars, 8)
                  .Select(s => s[random.Next(s.Length)])
                  .ToArray());
    return result;
}
我想修改它,这样它就不会是随机的,而是根据
DateTime.UtcNow.Ticks
选择字母数字。这样就不会重复。我想结果TransactionCode中的字符可能需要根据毫秒的长度增加?我希望生成的TransactionCode的长度为常量。希望不超过8个字符


示例:如果勾号恰好是
135
(对我来说比现实生活中更多),那么生成的代码将是
ACE
BDF
,这取决于它是否基于0(我不在乎它是否是)

我想您真正想要的是一个真正的非重复事务代码,或者:

如果要清理它,请执行以下操作:

txcode = txcode.Replace("=","").Replace("+","").Replace("/","");
生成的输出示例为
OEndimZwsEKRAbAwnvzjoA
,但由于替换了
+
/
=
,长度可能会稍微不可预测


您可能更喜欢这种格式
g.ToString(“N”)
,它提供类似于
58d5381c878b484591568b086296fe8e
,并且保证长度为32个字符。

我想您实际上想要的是一个真正的不重复事务代码,或者:

如果要清理它,请执行以下操作:

txcode = txcode.Replace("=","").Replace("+","").Replace("/","");
生成的输出示例为
OEndimZwsEKRAbAwnvzjoA
,但由于替换了
+
/
=
,长度可能会稍微不可预测


您可能更喜欢这种格式
g.ToString(“N”)
,它提供类似于
58d5381c878b484591568b086296fe8e
,并且保证长度为32个字符。

勾号不是不重复的。。。特别是多核;然而,一个简单的联锁计数器将是。。。正如数据库
标识
,以及
Guid
(显然,构造适当)一样,我认为您不想这样做。现代CPU在滴答计数器的分辨率方面能够做不止一件事。有关更多信息,请参阅。我认为您的示例并不代表您想要的内容,在这种情况下,只会使用
A
J
(除非
135
不是十进制值)。我在想,如果记号是135,那么它会从数组中选择它。135是字符中BDF的索引值“数组”标记不是非重复的。。。特别是多核;然而,一个简单的联锁计数器将是。。。正如数据库
标识
,以及
Guid
(显然,构造适当)一样,我认为您不想这样做。现代CPU在滴答计数器的分辨率方面能够做不止一件事。有关更多信息,请参阅。我认为您的示例并不代表您想要的内容,在这种情况下,只会使用
A
J
(除非
135
不是十进制值)。我在想,如果记号是135,那么它会从数组中选择它。135是字符“数组”中BDF的索引值。长度是否恒定?如果不是,我可以这样做吗?长度是恒定的吗?如果没有,我可以这样做吗?