0

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

因此,例如,用户可以指定stackoverflow.com的域以及列first namelast name。生成的 PURL 将是:

http://stackoverflow.com/JamesHill.

此插件的唯一真正挑战是确保 PURL 的唯一性。假设有两个 James Hill。在这种情况下,应生成以下 PURL:

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

问题

假设我List<CustomObject>每个都包含一个 PURL 属性(字符串),那么确保 PURL 唯一性的最佳方法是什么。我想我正在寻找与 SQLOVERPARTITION BY.

任何建议,将不胜感激。

附加信息

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

4

1 回答 1

1

两种最常见的解决方案是

1)HashSet<K>如果您只想测试密钥的唯一性,请使用 a 。

var purlsSet = new HashSet<string>();
purlsSet.Add("http://stackoverflow.com/JamesHill");
...
if (purlsSet.Contains("http://stackoverflow.com/JamesHill") {
    ...
} 

2)Dictionary<K,V>如果要存储键和值,请使用 a 。

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) {
    ...
} 

您还可以使用 a OrderedDictionary,它结合了列表和字典的功能,或者SortedDictionary<K,V>如果您希望条目始终被排序,则可以使用 a 。

于 2012-05-25T13:44:55.270 回答