C# 确保列表中的唯一标识符

C# 确保列表中的唯一标识符,c#,uniqueidentifier,C#,Uniqueidentifier,我正在创建一个Excel加载项,它允许用户通过指定域名和他们希望用于生成PURL的列来生成 因此,例如,用户可以指定stackoverflow.com的一个域以及“名字”和“姓氏”列。由此产生的PURL将是: http://stackoverflow.com/JamesHill. 此加载项唯一真正的挑战是确保PURL的唯一性。假设有两个詹姆斯·希尔。在这种情况下,应生成以下檩条: http://stackoverflow.com/JamesHill http://stackoverflow.co

我正在创建一个Excel加载项,它允许用户通过指定域名和他们希望用于生成PURL的列来生成

因此,例如,用户可以指定stackoverflow.com的一个域以及“名字”和“姓氏”列。由此产生的PURL将是:

http://stackoverflow.com/JamesHill.

此加载项唯一真正的挑战是确保PURL的唯一性。假设有两个詹姆斯·希尔。在这种情况下,应生成以下檩条:

http://stackoverflow.com/JamesHill
http://stackoverflow.com/JamesHill1
问题:

假设我有一个列表,其中每个列表都包含一个PURL属性字符串,那么确保PURL唯一性的最佳方法是什么。我想我正在寻找一个与SQL的OVER和partitionby相当的C语言

如有任何建议,将不胜感激

补充资料


在Excel中生成PURL后,数据将返回给我们的客户进行数据处理。在某个时候,数据将被导入到处理PURL服务器请求的数据库中。外接程序的目的是允许非程序员快速生成purl并将其返回给客户,而无需程序员参与

两种最常见的解决方案是

1如果只想测试密钥的唯一性,请使用哈希集

var purlsSet = new HashSet<string>();
purlsSet.Add("http://stackoverflow.com/JamesHill");
...
if (purlsSet.Contains("http://stackoverflow.com/JamesHill") {
    ...
} 
2如果要存储键和值,请使用字典

var purlsDict = new Dictionary<string, CustomObject>();
CustomObject customObject = ...;
purlsDict.Add("http://stackoverflow.com/JamesHill", customObject);
...

if (purlsDict.ContainsKey("http://stackoverflow.com/JamesHill") {
    ...
}

// OR

if (purlsDict.TryGetValue("http://stackoverflow.com/JamesHill", out customObject) {
    ...
} 

您还可以使用OrderedDictionary,它结合了列表和字典的功能,或者如果您想让条目始终被排序,可以使用SortedDictionary。

您真的应该将它们存储在db..。@DanielA.White中,它们最终将存储在db…中。通常情况下,数据处理是在建筑物外完成的。客户将向我们发送数据,要求我们生成PURLs,然后将数据返回给他们。我的任务是从这个过程中删除程序员。基本上,一旦生成PURL并返回给客户,数据将导入到处理PURL服务器请求的数据库中。一个简单的字典怎么样?我本来希望有一些更优雅的东西,比如SQL的OVER and PARTITION BY,但这让我走上了正确的道路。谢谢。如果您正在寻找检索唯一值的SQL方法,请使用SELECTDISTINCT purl FROM table。如果您正在寻找一种检测重复项的方法,请通过purl使COUNTpurl>1,使用SELECT purl FROM table GROUP。谢谢你的帮助。你可以用同样的方式使用LINQ扩展方法Distinct或GroupBy。