Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.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
Vb.net GUID可排序字符串唯一性_Vb.net - Fatal编程技术网

Vb.net GUID可排序字符串唯一性

Vb.net GUID可排序字符串唯一性,vb.net,Vb.net,此代码是否会破坏guid唯一性。我试图使字符串值可以排序 Guid.Parse(Now.ToString("yyMMddHH-mmss-fff") & guidi.ToString.Substring(17)) <System.Runtime.CompilerServices.Extension> _ Public Function NewSeqGUID(guidi As Guid) As Guid guidi = Guid.Parse(Now.ToString("

此代码是否会破坏guid唯一性。我试图使字符串值可以排序

Guid.Parse(Now.ToString("yyMMddHH-mmss-fff") & guidi.ToString.Substring(17))

<System.Runtime.CompilerServices.Extension> _
Public Function NewSeqGUID(guidi As Guid) As Guid
    guidi = Guid.Parse(Now.ToString("yyMMddHH-mmss-fff") & guidi.ToString.Substring(17))
    Return guidi
End Function
Guid.Parse(Now.ToString(“yymmddh mmss fff”)&guidi.ToString.Substring(17))
_
公共函数NewSeqGUID(guidi作为Guid)作为Guid
guidi=Guid.Parse(Now.ToString(“yymmddh mmss fff”)&guidi.ToString.Substring(17))
归归归地
端函数

guid易于排序。但是它们不是用来排序的,如果你这样做了,你就不能依靠排序后的guid列表来匹配它们的创建顺序。
它们的伪随机性的熵有时依赖于实现

即使
UuidCreateSequential
API函数的文档可以依赖任何排序顺序,未来的实现可能会选择下降而不是上升、留下间隙或替代。顺序和顺序不是一回事

您创建的字符串不再保证是唯一的,除非您可以强制执行任何两个时间戳都不会相同(一个好的开始是使用四位数的年份!还记得2000吗?)

这是因为我们不知道下一个GUID与上一个GUID的不同之处。如果它恰好位于被时间戳覆盖的左侧部分,那么最终可能会得到两个相同的字符串

一种可能是只使用唯一的时间戳。您可以自由地格式化这些文件,使它们看起来像GUID,并解析为GUID(无论出于何种原因)。您可以使用零填充来填充它:

{20180413-2213-2490-0000-000000000000}

最后,你的问题可能是一个X-Y问题。告诉我们更多关于您实际需要实现的内容,并毫不犹豫地添加字段、列或实现这两个目标所需的任何内容:唯一键和自定义排序顺序,同时不影响GUID的概念。

第一个始终引发异常,第二个不编译,所以关于它的独特性的问题根本没有意义。您不能创建一个GUID来开始使用该代码,无论是否唯一。我不确定您要做什么,但这不会创建唯一的GUID。这应该做什么?这对我一点用都没有。另外,
Guid.ToString()
已可排序。请发布您正在使用的实际代码,您的意图是这是对guid概念的一个彻底的巴斯德化。您不能滚动自己的guid并仍将其称为guid。这完全违背了guid的全部观点。如果您想要自己的可排序id,那么只需定义您的id并将“guid”排除在外。不,这些将不再是guid。您的数据库中可能需要一个可排序列,它同时是主键或复制id?告诉我们更多关于引导您走出死胡同的应用程序的信息。客户端希望导出的文本值可以排序。我只去了2年的领域,因为要求未来的记录,不认为这将持续到3000年。文本值中有更多的alpha和毫秒似乎更有效地使其独特。我只想告诉他们,如果不损害数据完整性,这种情况是不会发生的。我明白你的困境。这不是客户的合理要求,他们真的应该有第二列对数据进行排序。如上所述,如果您可以添加一个查找机制来保证时间戳是唯一的,您不需要将其用作复制id,或者需要防止与其他地方创建的类似数据集发生冲突,并且项目的数量不会耗尽“地址空间”,那么您就可以满足他们的请求Id可以在不同的系统中生成,但不能保证它们在创建时会连接到服务器。将存储时间戳标记信息,这是正在使用的排序。我收到他们的请求,他们希望ID可以排序。但是由于重复ID的代价,请求是不可行的。