草庐IT

唯一性

全部标签

c# - .Net HashSet 唯一性计算是否完全基于Hash Codes?

我想知道.NetHashSet是否是完全基于哈希码还是也使用相等性?我有一个特定的类,我可能会实例化它的数百万个实例,并且某些哈希码很可能会在此时发生冲突。我正在考虑使用HashSet来存储此类的一些实例,并且想知道它是否真的值得这样做-如果元素的唯一性仅由其哈希码确定,那么这对我的实际应用程序毫无用处MSDN文档在这个主题上似乎相当模糊-任何启发将不胜感激 最佳答案 不,它也使用平等。根据定义,散列码不需要是唯一的——任何假定它们将被破坏的东西。HashSet是明智的。它使用IEqualityComparer(默认为Equalit

c# - 查找所有交叉数据,而不仅仅是唯一值

我以为我理解了Intersect,但事实证明我错了。Listlist1=newList(){1,2,3,2,3};Listlist2=newList(){2,3,4,3,4};list1.Intersect(list2)=>2,3//ButwhatIwantis://=>2,3,2,3,2,3,3我可以想出一个办法:varintersected=list1.Intersect(list2);varlist3=newList();list3.AddRange(list1.Where(I=>intersected.Contains(I)));list3.AddRange(list2.Whe

C# 根据硬件 ID 创建唯一 ID

这个问题在这里已经有了答案:Istherereallyanywaytouniquelyidentifyanycomputeratall(5个答案)关闭7年前。我正在创建一个特定于机器的许可证。许可证基于以下项目:MAC地址CPU序列号驱动器0的计算机卷序列号我假设如果3个中的2个匹配,那么我的许可证有效。因此,可以获得新的网卡,许可证仍然有效等。这是一个好方法,还是我会遇到不匹配或不定期更改的问题?我正在尝试获取计算机的唯一标识符,以便我可以验证许可证。请让我知道这看起来如何,或者您是否有更好的解决方案!再次感谢!**以下是我的想法**我最终只使用了VolumeSerial、CpuId

c# - C# 中等效的 SQL Server 唯一标识符

我应该在C#中使用什么数据类型来处理SQLServeruniqueidentifier。我需要任何转换等吗? 最佳答案 System.Guid无需转换。 关于c#-C#中等效的SQLServer唯一标识符,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2148949/

c# - 查明 IEnumerable<> 是否具有唯一值的最佳方法

我有很多代码可以做这样的事情boolGetIsUnique(IEnumerablevalues){returnvalues.Count()==values.Distinct().Count;}有没有更好更快更好的方法来做到这一点? 最佳答案 我会让它成为一个很好的扩展方法publicstaticboolIsUnique(thisIEnumerablelist){varhs=newHashSet();returnlist.All(hs.Add);}检查是否所有项目都可以添加到HashSet。

c# - 为两个数字的组合生成唯一值

假设我有两个数字1023232和44。我想生成一个唯一的数字来表示这个数字组合。我怎样才能生成它?要求f(x,y)=f(y,x)并且f(x,y)对于每个(x,y)或(y,x)都是唯一的 最佳答案 如果这是两个整数,你可以这样做:ulongF(intx,inty){ulongid=x>y?(uint)y|((ulong)x如果您需要为给定大小的两个变量生成真正唯一的值,则每个变量的大小大约需要加倍。(好的,现在f(x,y)==f(y,x)少了一点)您还可以通过反转相同的操作来恢复原始值。

c# - 电子邮件的唯一标识是什么?

我正在尝试找到有保证的唯一标识符来区分电子邮件。目前,我正在编写一个连接到MicrosoftExchange的应用程序,但我希望能够支持其他电子邮件服务。我认为唯一标识符是EmailMessage.InternetMessageId,并且该属性使用PR_ENTRYID,只是我找不到任何文档来支持这一点。是否所有电子邮件都有一个唯一的标识符(在Exchange中)是InternetMessageId? 最佳答案 没有保证电子邮件的唯一ID,Message-ID与您的接近。您实际上可以希望的最好的是服务器的独特性……甚至这取决于邮件服务

c# - 使用 LINQ 选择单个列表的所有唯一组合,不重复

我有一个数字列表,我需要使用LINQ查询创建列表中所有可能的唯一数字组合,不重复。因此,例如,如果我有{1,2,3},则组合将是1-2、1-3和2-3.我目前使用两个for循环,如下所示:for(inti=0;i是否可以将这两个for循环转换为LINQ?谢谢。 最佳答案 当然-您可以在对SelectMany的单个调用中通过对Skip的嵌入式调用来完成此操作:varquery=slotIds.SelectMany((value,index)=>slotIds.Skip(index+1),(first,second)=>new{firs

c# - 生成在合理时间内不重复的唯一编号的方法?

我正在集成/测试远程Web服务,即使它是“QA”端点,它仍然在每个调用上强制使用唯一的电子邮件地址。我可以想到DateTime.Now.Ticks(例如634970372342724417)和Guid.NewGuid(),但这些都不能合并到一封电子邮件中。20个字符(或者可以吗?)。我想将包含最后使用的数字的数字写入文件并使用email1@x.com、email2@x.com等...并不难,但是如果我可以避免持久状态,我总是这样做。有没有人有技巧或算法可以提供短长度“guid”的东西,它在相当长的时间段(比如一年)内是独一无二的,我可以将其用于最大长度为20个字符的电子邮件地址(gui

c# - 类型中的属性名称必须是唯一的

我正在使用EntityFramework5并且我有以下实体:publicclassUser{publicInt32Id{get;set;}publicStringUsername{get;set;}publicvirtualICollectionCLaims{get;set;}}publicclassClaim{publicInt32Id{get;set;}publicStringType{get;set;}publicStringValue{get;set;}publicvirtualUserUser{get;set;}}关于这些实体的几点说明:在User实体中,Id是PK;在Cla